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');
},
我正在尝试显示搜索结果列表。错误与 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');
},