android - 为什么我的小部件的构建方法认为我返回 NULL?

标签 android flutter dart widget

我不明白为什么会出现错误。我所有的 if/else 路径总是会返回一些东西,但代码似乎认为有一个以 NULL 结尾的路径?

错误:

The following _TypeError was thrown building: type 'Null' is not a subtype of type 'Widget'

@override
  Widget build(BuildContext context) {
    final messageDao = MessageDao(groupIDPath: widget.groupIDPath);
    var msg;
    return Scaffold(
      body: Container(
        child: ListView.builder(
          itemCount: data?.length ?? 0,
          itemBuilder: (context, index) {
            return data?.forEach((key, value) { //ERROR POINTS HERE

              msg = Message.fromJson(value);

              dataList?.add(msg);

              if (dataList?[index] == null) { 
                return Text('dataList[index] is NULL');
              } else {
                var receivedType = dataList?[index].type.toString();
                var receivedUid = dataList?[index].uid.toString();
                var receivedTimestamp = dataList?[index].timestamp.toString();
                var receivedText = dataList?[index].text.toString();
                var receivedFilterID = dataList?[index].filterID.toString();
                var receivedM2URL = dataList?[index].m2URL.toString();

                if (dataList?[index].type == '1') { //message type 1
                  return messageDao.m1Widget(receivedType!, receivedUid!, receivedTimestamp!, receivedText!); 
                } else if (dataList?[index].type == '2') { //message type 2
                  return messageDao.m2Widget(receivedType!, receivedUid!, receivedTimestamp!, receivedFilterID!, receivedM2URL!);
                } else {
                  return Text('UNKNOWN MESSAGE TYPE!');
                }
              }
            });
          }
        ),
      )
    );
  }

最佳答案

对于每个 void 函数,它不返回任何内容。 https://api.dart.dev/stable/2.16.2/dart-core/Iterable/forEach.html

关于android - 为什么我的小部件的构建方法认为我返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72036782/

相关文章:

android - 由于 Android Zygote,将 OpenSSL 编译为不同的名称

android - 如何清除导航组件中的 fragment 堆栈?

flutter - 如何在 Flutter 中使用 restful 调用验证 textformfield 中的值?

android - ImageButton 上的 ScaleType 导致小图像

flutter - 强制 TabController 创建所有选项卡 Flutter

java - 无法在 Flutter 项目中找到 layout.xml

ios - flutter 中丢失 Cocoapods 文件

dart - 使用 material-dropdown-select 时 DomPopupSourceFactory 提供程序错误

android - Flutter - Webview_plugin - 我无法启用视频全屏

javascript - Android WebView HTML 输入按键不会触发