NyFutureBuilder
用于在项目中处理 Future 的组件。在Future进程中,它将显示一个加载器;Future进程完成后,它将通过子参数返回数据。
让我们深入了解一些代码。
- 我们有一个返回字符串的Future
- 我们希望在用户界面上为用户显示数据
// 1. 3秒后Future完成的示例
Future<String> _findUserName() async {
await Future.delayed(Duration(seconds: 3));
return "John Doe";
}
// 2. 使用NyFutureBuilder组件
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
child: NyFutureBuilder(future: _findUserName(), child: (context, data) {
// data = "John Doe"
return Text(data!);
},),
),
),
);
}
自定义 NyFutureBuilder
可以将以下参数传递给 NyFutureBuilder
类,以根据需要对其进行自定义。
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: NyFutureBuilder(
future: NyStorage.read("product_name"),
child: (context, data) {
return Text(data);
},
loading: CupertinoActivityIndicator(), // 修改默认加载器
onError: (AsyncSnapshot snapshot) { // 处理future错误
print(snapshot.error.toString());
return Text("Error");
},
)
),
);
}