android - 从 future 的 flutter 中返回一个列表

标签 android asynchronous dart flutter

大家好,我是 Flutter 和异步编程的新手。我需要做这样的事情:

List<Widget> usersProfiles = [];
      getUsers('DcofOiHWcjbjD0i18miW').then((user) {
        user.forEach((u) {
          usersProfiles.add(new ListTile(
            leading: CircleAvatar(
              backgroundImage: AssetImage(u.profilePicture),
            ),
            trailing: u.icon,
            title: new Text(u.name),
            onTap: () {
              Navigator.push(context,
                  new MaterialPageRoute(builder: (context) => new Home()));
            },
          ));
        });
      });

但是 usersProfiles 返回 null

我会很感激

最佳答案

我会推荐 FutureBuilderStreamBuilder (对于流)它为您提供布局性能优势以及轻松添加加载和错误小部件的工具。 它可能如下所示:

Future<List<User>> usersFuture = getUsers('DcofOiHWcjbjD0i18miW');

将 future 创建为成员变量,这样您只需获取一次(以防每次调用该方法时都会启动一个新的 future )。然后在 FutureBuilder 中使用它。

FutureBuilder<List<User>>(
    future: usersFuture,
    builder: (context, snapshot) {
      if(snapshot.connectionState != ConnectionState.done) {
        // return: show loading widget
      }
      if(snapshot.hasError) {
        // return: show error widget
      }
      List<User> users = snapshot.data ?? [];
      return ListView.builder(
        itemCount: users.length,
        itemBuilder: (context, index) {
          User user = users[index];
          return new ListTile(
            leading: CircleAvatar(
              backgroundImage: AssetImage(user.profilePicture),
            ),
            trailing: user.icon,
            title: new Text(user.name),
            onTap: () {
              Navigator.push(context,
                  new MaterialPageRoute(builder: (context) => new Home()));
            },
          );
      });
  });

关于android - 从 future 的 flutter 中返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011075/

相关文章:

像社交媒体这样的 Flutter 应用程序

flutter - 安装build_runner时Dart SDK版本不匹配

dart - 聚合物表达式通过名称访问属性

android - 构建 AOSP 后无法启动模拟器

java - Java中的单线程异步处理

c# - 并行异步调用时如何获取最大出站请求?

node.js - Nodejs异步混淆

android - 连接安卓手机的usb主机设备必须是arduino吗?

android - 在 Android Studio 中使用 MultiDex 功能时,有没有办法限制主 dex 文件中的方法数量

java - 在 recyclerview 中访问 JSON 数组中的项目成员