Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 返回一个来自未来的列表_Android_Asynchronous_Dart_Flutter - Fatal编程技术网

Android 返回一个来自未来的列表

Android 返回一个来自未来的列表,android,asynchronous,dart,flutter,Android,Asynchronous,Dart,Flutter,嗨,我是颤振和异步编程新手。我需要这样做: List<Widget> usersProfiles = []; getUsers('DcofOiHWcjbjD0i18miW').then((user) { user.forEach((u) { usersProfiles.add(new ListTile( leading: CircleAvatar( backgroundImage: A

嗨,我是颤振和异步编程新手。我需要这样做:

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()));
            },
          ));
        });
      });
列出用户配置文件=[];
getUsers('dcofihwcjbjd0i18miw')。然后((用户){
user.forEach((u){
添加(新的ListTile)(
领先:CircleAvatar(
背景图片:AssetImage(u.profilePicture),
),
尾随:u.icon,
标题:新文本(美国名称),
onTap:(){
Navigator.push(上下文,
new MaterialPage路线(生成器:(上下文)=>new Home());
},
));
});
});
但是
usersProfiles
返回
null


我将非常出色

我建议使用or(用于流),它可以为布局性能带来好处,还可以使用工具轻松添加加载和错误小部件。 它可能如下所示:

Future<List<User>> usersFuture = getUsers('DcofOiHWcjbjD0i18miW');
Future 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()));
            },
          );
      });
  });
FutureBuilder(
未来:用户未来,
生成器:(上下文,快照){
if(snapshot.connectionState!=connectionState.done){
//返回:显示加载小部件
}
if(snapshot.hasError){
//返回:显示错误小部件
}
列表用户=snapshot.data???[];
返回ListView.builder(
itemCount:users.length,
itemBuilder:(上下文,索引){
用户=用户[索引];
返回新的ListTile(
领先:CircleAvatar(
背景图片:AssetImage(user.profilePicture),
),
尾随:user.icon,
标题:新文本(用户名),
onTap:(){
Navigator.push(上下文,
new MaterialPage路线(生成器:(上下文)=>new Home());
},
);
});
});
未来的JuniorDeveloper问题{
//将扩展列表与动态数据一起使用
返回_2021.Solution.ExpansionListWithDynamicData;
}

如何获取单击项目的数据?我知道,实际上它可以用索引来完成。但是我不能在FutureBuilder中使用索引。提前谢谢。
Future<Solution> JuniorDeveloperQuestion {
// use Expansion List with Dynamic Data
return _2021.Solution.ExpansionListWithDynamicData; 
}