当前位置: 首页 > 知识库问答 >
问题:

FutureBuilder仅用于调试

东方旺
2023-03-14

我有一个带有ListView的FutureBuilder来显示自定义项(小部件),其值是从。txt文件中读取的。

问题是,只有当我在调试模式或运行模式下启动应用程序时,这些项才会显示。当我试图用AppLauncher打开应用程序时(就像“普通”用户会这样做一样),listView是空的。我在一个AVD和一个“真正的”设备上试过这个。

class Home extends StatefulWidget {
  final Future listFuture = setupList();

  @protected
  @mustCallSuper
  void initState() {
    print("init complete");
  }

  @override
  State<StatefulWidget> createState() {
    return HomeState();
  }
}
child: FutureBuilder<List<SubListItem>>(
                      future: widget.listFuture,
                      // ignore: missing_return
                      builder: (BuildContext context, AsyncSnapshot snapshot) {
                        switch (snapshot.connectionState) {
                          case ConnectionState.none:
                            return new Text("None");
                          case ConnectionState.waiting:
                            return new Text("loading");
                          default:
                            if (snapshot.hasError) {
                              print("Error");
                              return Center(child: (Text("No data")));
                            } else {
                              return subListView(context, snapshot);
                            }
                        }
                      },
                    ),
Widget subListView(BuildContext context, AsyncSnapshot snapshot) {
  List<Widget> items = snapshot.data;

  //This ScrollConfiguration is used to remove any animations while scrolling
  return ScrollConfiguration(
    behavior: CustomScrollBehavior(),
    child: Container(
      padding: EdgeInsets.symmetric(horizontal: 4),
      child: new ListView.builder(
        itemCount: items.length,
        itemBuilder: (BuildContext context, int index) {
          return Column(
            children: <Widget>[items[index]],
          );
        },
      ),
    ),
  );
}

共有1个答案

桓深
2023-03-14

好的,我解决了问题。只需在构建小部件时调用“setstate”即可。

  @protected
  @mustCallSuper
  void initState() {
    super.initState();
    Future.delayed(Duration.zero, () {
      //This setState is necessary because it refreshes the listView
      setState(() {});
    });
  }
 类似资料:
  • Navicat 提供两款代码调试器:“Oracle PL/SQL 调试器”和“PostgreSQL PL/pgSQL 调试器”。使用调试器,你可以切换断点,获取调用堆栈,查看变量值,追踪代码等。

  • Navicat 提供两款代码调试器:“Oracle PL/SQL 调试器”和“PostgreSQL PL/pgSQL 调试器”。使用调试器,你可以切换断点,获取调用堆栈,查看变量值,追踪代码等。

  • Navicat 提供两款代码调试器:“Oracle PL/SQL 调试器”和“PostgreSQL PL/pgSQL 调试器”。使用调试器,你可以切换断点,获取调用堆栈,查看变量值,追踪代码等。

  • 如何正确使用和?例如,当我创建一个有状态小部件时,它开始加载数据(FutureBuilder),然后我应该用新数据更新列表,所以我使用setState,但它开始循环无穷大(因为我再次重建了小部件),有什么解决方案吗?

  • 我有一个Async appender,仅在我设置级别=调试时才有效。对于“错误”级别,它不会记录任何内容。 我不确定这个配置中缺少了什么。这是我正在尝试使用的自定义appender }

  • 问题内容: 我正在阅读有关Java流的信息,并在不断学习中发现新事物。我发现的新peek()功能之一就是功能。我偷看的几乎所有内容都说应将其用于调试Streams。 如果我有一个Stream,其中每个帐户都有一个用户名,密码字段以及一个login()和loggingIn()方法,该怎么办。 我也有 和 为什么会这么糟糕? 现在,据我所知,这确实可以实现预期的目的。它; 取得帐户清单 尝试登录每个帐