Flutter - 正文可能会正常完成,导致 'null' 被 returned,但 return 类型可能是不可空类型

Flutter - The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type

我正在尝试显示搜索结果列表。错误与 ListView 生成器有关。

ListView.builder(
          itemCount: searchResults.length,
          itemBuilder: (context, index) {
            final searchResultAccount = searchResults[index];
            for (var element in searchResults[index].profile!) {
              final searchResultProfile = element;
              return ListTile(
                leading: CircleAvatar(
                  backgroundImage: searchResultProfile.profileImage.isNotEmpty
                      ? NetworkImage(
                          searchResultProfile.profileImage,
                        )
                      : null,
                  child: searchResultProfile.profileImage.isNotEmpty
                      ? null
                      : const Icon(
                          Icons.person,
                        ),
                ),
                title: Text(
                  searchResultProfile.profileName,
                ),
                onTap: () {
                     //navigate to profile
                },
              );
            }
            if (searchResults.isEmpty) {
              return Text('no results');
            }
          },
        ),

我尝试将代码放在 try-catch 块中,即使使用上面我最后添加到 return 文本小部件的条件语句,我仍然遇到相同的错误。

如何清除这个错误?

我会说其中一个参数作为空值发送,请尝试挖掘以找出它发送错误的位置。

此外,for 似乎有点不合适,因为它只会迭代一次,并且 return 配置文件的第一个元素位于该索引处。您可以获得相同的第一个元素。

我们有可能从 searchResults[index].profile 得到空值。因此,循环可能不会 return 任何 ListTile 小部件。
此外,在使用循环时,它将 return 一个小部件列表。但是你 return 单身 ListTile。你可以用 Column.

换行

searchResults.isEmpty可能不符合条件,也不会returnText(..)。您可以包含 else 语句和 return 小部件。

itemBuilder: (context, index) {
  final searchResultAccount =....;
   List<Widget> xWidgets = [];
  for (var element in searchResults[index].profile!) {
    xWidgets.add( ListTile(..));
  }

 if (xWidgets.isNotEmpty) {
          return Column( 
            mainAxisSize: MainAxisSize.min,
            children: xWidgets,
          );
        }

  
   return Text('no results');
 
},