在 ListView 中使用 setState

如何

我试图从两个表中获取数据并显示到 ListView。

 child: Container(
                  child: StreamBuilder<List<ABC>>(
                      stream: _abcBloc
                          .getListStream,
                      builder: (context, snapshot) {
                        switch (snapshot.connectionState) {
                          case ConnectionState.waiting:
                            return Center(
                              child: Image.asset(
                                'assets/loading.gif',
                                width: 200.0,
                                height: 200.0,
                              ),
                            );
                            break;

                          case ConnectionState.active:
                            if (snapshot.data.isEmpty) {
                              return Container(child: Text('empty'));
                            } else {
                              return ListView.builder(
                                  shrinkWrap: true,
                                  itemCount: snapshot.data.length,
                                  itemBuilder: (context, index) {
                                    var _reading = snapshot.data[index];
                                    var name;

                                    _abcBloc.getName(_reading.Id)
                                        .then((onValue) {
                                      name = onValue.name;
                                    });

                                    return InkWell(
                                        onTap: () {},
                                        child: Padding(
                                          padding: EdgeInsets.all(10),
                                          child: Column(
                                            children: <Widget>[
                                              Text(name == null ? '' : name),
                                            ],
                                          ),
                                        ));
                                  });
                            }
                            break;

                          default:
                            return Text("edwqd");
                        }
                      }))

首先它会调用_abcBloc.getListStream. 我能够在这一行 ( var _reading = snapshot.data[index];) 中获取数据

之后,我想通过调用此函数从另一个表中获取名称_abcBloc.getName(_reading.Id)但是,名称始终显示为空。

卡尔佩什·昆达纳尼

每当您使用 Future 并根据您的未来价值创建小部件时,您应该始终使用 FutureBuilder。

用以下代码替换您的 ListView.builder:

ListView.builder(
  shrinkWrap: true,
  itemCount: snapshot.data.length,
  itemBuilder: (context, index) {
  var _reading = snapshot.data[index];
  var name;

  // _abcBloc.getName(_reading.Id)
  //     .then((onValue) {
  //   name = onValue.name;
  // });

  return FutureBuilder(
    future: _abcBloc.getName(_reading.Id),
    builder: (BuildContext context, AsyncSnapshot snapshot) {
      if(!snapshot.hasData) return Container();
      name = snapshot.data;
      return InkWell(
      onTap: () {},
      child: Padding(
        padding: EdgeInsets.all(10),
        child: Column(
          children: <Widget>[
            Text(name == null ? '' : name),
          ],
        ),
      ))
    },
  );
});

希望能帮到你,如有疑问请评论。如果它对您有用,请不要忘记接受并为答案投票。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在setState中使用Navigator

来自分类Dev

在Flutter中使用setState时?

来自分类Dev

何时在Flutter中使用setState?

来自分类Dev

在表单中使用函数setState

来自分类Dev

在setState中使用变量-反应

来自分类Dev

在ListView中使用QAbstractListModel

来自分类Dev

在ListView中使用AutomationID

来自分类Dev

setState 不更新 ListView 数据

来自分类Dev

何时在“setState”中使用对象而不是使用功能“setState”?

来自分类Dev

Android:是否可以在ListView中使用ListView?

来自分类Dev

Flutter ListView不会使用setState()刷新UI,尽管itemCount和附加列表已正确更新

来自分类Dev

如何在ReactJS中使用setState()方法?

来自分类Dev

在React中使用setState的多个获取请求

来自分类Dev

如何在 setState 中使用析构?

来自分类Dev

在React setState中使用子键的计算值

来自分类Dev

在React中使用setState更新对象

来自分类Dev

在React中使用setState更新对象

来自分类Dev

如何在异步函数中使用setState

来自分类Dev

在React中使用动态键设置setState

来自分类Dev

React:如何在AddListener()中使用setState?

来自分类Dev

如何在SearchDelegate中使用setState

来自分类Dev

在Flutter中使用setState更改变量

来自分类Dev

如何避免在React的shouldComponentUpdate()中使用setState?

来自分类Dev

我正在尝试在React中使用setState

来自分类Dev

在ReactJS中使用forceUpdate是否比setState()慢?

来自分类Dev

验证要在 setState 中使用的变量

来自分类Dev

在ListView的StackLayout中使用TextCell

来自分类Dev

在Android ListView中使用onScroll

来自分类Dev

在聊天版式中使用Listview