Flutter微框架Nylo(十五):NyFutureBuilder

89 阅读1分钟

NyFutureBuilder 用于在项目中处理 Future 的组件。在Future进程中,它将显示一个加载器;Future进程完成后,它将通过子参数返回数据。

让我们深入了解一些代码。

  1. 我们有一个返回字符串的Future
  2. 我们希望在用户界面上为用户显示数据
// 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");
         },
       )
    ),
  );
}