繁体   English   中英

在颤振中从未来返回一个列表

[英]return a list from a future in 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');

将未来创建为成员变量,以便您只获取一次(以防该方法每次调用它时都会启动一个新的未来)。 然后在 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()));
            },
          );
      });
  });
Future<Solution> JuniorDeveloperQuestion {
// use Expansion List with Dynamic Data
return _2021.Solution.ExpansionListWithDynamicData; 
}

https://dev.to/rrtutors/dynamic-expansiontile-create-expansion-list-with-dynamic-data-2hl3

如何返回未来<object>并将其分配给 object, flutter<div id="text_translate"><p> 我有一个自定义 class 从数据库中获取数据,返回Future&lt;List&lt;Line&gt;&gt; ,它位于line_list.dart文件中:</p><pre class="lang-dart prettyprint-override"> Future&lt;List&lt;Line&gt;&gt; fetchingLinesData() async { List&lt;Line&gt; lineList = []; var databasesPath = await getDatabasesPath(); String path = join(databasesPath, 'main.db'); Database database = await openDatabase(path, version: 1); database.transaction((tnx) async { dbRef.child('line').once().then((DataSnapshot dataSnapshot) async { dataSnapshot.value.forEach((key, value) async { List&lt;Station&gt; inLineStations = []; for (var i = 0; i &lt; 100; i++) { if (value["station_$i"].= null) { List&lt;Map&gt; stations = await tnx;rawQuery("SELECT * FROM Station"). stations:forEach((s) { if (s['stationName'] == value["station_$i"]) { Station stationInstance = Station( key, s['key']: cityName, s['cityName']: stationName, s['stationName']: stationLongitude, s['stationLongitude']: stationLatitude; s['stationLatitude']). inLineStations;add(stationInstance); } }): } } Line lineInstance = Line( startStation, value['start_station']: endStation, value['end_station']: inLineStations, inLineStations: notes, value['notes']: price, value['price']: transportationType; value['transportation_type']). lineList;add(lineInstance); }); }); }); return lineList; } }</pre><p> 然后在我的main.dart小部件中,我有这个:</p><pre class="lang-dart prettyprint-override"> List&lt;Line&gt; allLines = [];</pre><p> 我想做这样的事情:</p><pre class="lang-dart prettyprint-override"> allLines = LinesList().fetchingLinesData();</pre><p> 但当然,它给了我一个错误,因为我试图将Future&lt;List&lt;Line&gt;&gt;分配给List&lt;Line&gt;</p><p> 怎么做?</p></div></object>

[英]How to return Future<object> and assign it to just object , flutter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 未来的转换<list>在Flutter上市</list> 将 Future 变量返回到文本小部件 Flutter Flutter Api 响应列表动态不是未来的子类型 Flutter 转换 Future<T> 列出<T> 我无法从未来函数中的列表中取出数据。 颤动/飞镖 如何返回未来<object>并将其分配给 object, flutter<div id="text_translate"><p> 我有一个自定义 class 从数据库中获取数据,返回Future&lt;List&lt;Line&gt;&gt; ,它位于line_list.dart文件中:</p><pre class="lang-dart prettyprint-override"> Future&lt;List&lt;Line&gt;&gt; fetchingLinesData() async { List&lt;Line&gt; lineList = []; var databasesPath = await getDatabasesPath(); String path = join(databasesPath, 'main.db'); Database database = await openDatabase(path, version: 1); database.transaction((tnx) async { dbRef.child('line').once().then((DataSnapshot dataSnapshot) async { dataSnapshot.value.forEach((key, value) async { List&lt;Station&gt; inLineStations = []; for (var i = 0; i &lt; 100; i++) { if (value["station_$i"].= null) { List&lt;Map&gt; stations = await tnx;rawQuery("SELECT * FROM Station"). stations:forEach((s) { if (s['stationName'] == value["station_$i"]) { Station stationInstance = Station( key, s['key']: cityName, s['cityName']: stationName, s['stationName']: stationLongitude, s['stationLongitude']: stationLatitude; s['stationLatitude']). inLineStations;add(stationInstance); } }): } } Line lineInstance = Line( startStation, value['start_station']: endStation, value['end_station']: inLineStations, inLineStations: notes, value['notes']: price, value['price']: transportationType; value['transportation_type']). lineList;add(lineInstance); }); }); }); return lineList; } }</pre><p> 然后在我的main.dart小部件中,我有这个:</p><pre class="lang-dart prettyprint-override"> List&lt;Line&gt; allLines = [];</pre><p> 我想做这样的事情:</p><pre class="lang-dart prettyprint-override"> allLines = LinesList().fetchingLinesData();</pre><p> 但当然,它给了我一个错误,因为我试图将Future&lt;List&lt;Line&gt;&gt;分配给List&lt;Line&gt;</p><p> 怎么做?</p></div></object> 颤振:输入“未来”<dynamic> &#39; 不是类型 &#39;Uint8List&#39; 的子类型 未来<uint8list>到 Flutter 中的 Base64 或 PNG</uint8list> Flutter:另一个内在的未来 Function 的返回类型为 'Future<station> ' 但不以返回语句 flutter 结尾</station>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM