应用需要热重载到 运行

hot reload needs to be done for app to run

我正在开发一个 Flutter 应用程序,如果 Firebase 中的数据为 != null,它会使用 Firebase 和 Stream 来显示列表视图。如果数据为空,我的代码会显示一个加载符号。每当我启动我的应用程序时,首先出现的是加载符号,并且在我热重新加载我的应用程序之前不会消失。当我再次热重启时,我需要热重载才能显示数据。如果我曾经发布我的应用程序,这个问题是否会出现在用户面前,或者仅仅是因为我在模拟器中处于调试模式?如果这是应用发布时可能出现的问题,有人知道如何解决吗?

代码:

  Widget MemoirsList() {
    return SingleChildScrollView(
      child: memoirsStream != null
          ? Column(
              children: <Widget>[
                StreamBuilder(
                  stream: memoirsStream,
                  builder: (context, snapshot) {
                    return ListView.builder(
                        padding: EdgeInsets.symmetric(horizontal: 16),
                        itemCount: snapshot.data.documents.length,
                        shrinkWrap: true,
                        physics: NeverScrollableScrollPhysics(),
                        itemBuilder: (context, index) {
                          return MemoirsCard(
                            authorName: snapshot.data.documents[index].data['authorName'],
                            title: snapshot.data.documents[index].data["title"],
                            description: snapshot.data.documents[index].data['description'],
                            imgUrl: snapshot.data.documents[index].data['imgURL'],
                          );
                        });
                  },
                )
              ],
            )
          : Container(
              alignment: Alignment.center,
              child: CircularProgressIndicator(),
          ),
    );
  }

肯定和Debug模式有关。我也经常面对这个问题。尝试在发布模式下构建它,它应该可以正常工作。由于允许热重载和源代码级调试的调试开销,调试版本的应用程序大小很大。

构建应用的发布版本时,请考虑使用 --split-debug-info 标签。此标记可以显着减少代码大小。有关使用此标记的示例,请参阅 Obfuscating Dart code.

您可以采取其他措施来缩小您的应用程序:

  • 删除未使用的资源
  • 尽量减少从图书馆导入的资源
  • 支持有限数量的屏幕密度
  • 压缩 PNG 和 JPEG 文件

To build a release version for Android

To build a release version for IOS