List 初始化列表以避免潜在错误
此函数List 初始化列表以避免潜在错误,list,flutter,dart,List,Flutter,Dart,此函数 List<int> _calculateTrips() { List<int> trips = []; trips = List.generate( 30, (index) { var counter = 0; var aDay = DateTime.now().subtract(Duration(days: index)); for (var aWalk in walks)
List<int> _calculateTrips() {
List<int> trips = [];
trips = List.generate(
30,
(index) {
var counter = 0;
var aDay = DateTime.now().subtract(Duration(days: index));
for (var aWalk in walks) {
if ((aDay.month == aWalk.month) && (aDay.day == aWalk.day)) {
counter++;
}
}
trips.add(counter);
},
);
return trips;
}
List\u calculateTrips(){
列出行程=[];
trips=List.generate(
30,
(索引){
var计数器=0;
var aDay=DateTime.now().subtract(持续时间(天数:索引));
用于(步行时的var aWalk){
如果((日月==预警月)&&(日日==预警日)){
计数器++;
}
}
添加(计数器);
},
);
回程;
}
创建错误
正文可能正常完成,导致返回null,但返回类型可能是不可为null的类型。请尝试在结尾添加return或throw语句。
我很难理解此消息,因为(a)我认为我在函数开头初始化了列表,以及(b)我想我在结尾有一个return语句。问题在于传递给List.generate()
的函数。它需要一个E函数(int)
,其中E
是元素的类型,例如:
final evernumbers=List.generate(10,(索引){
收益指数*2;
});
您的问题来自行程。添加(计数器):
List trips=[];
行程=列表生成(30,(索引){
最终行程=计算行程(指数);
trips.add(trip);
})
内部函数必须是int函数(int)
(即接受int
,并返回int
)的函数,因为您的列表是列表
但是,您的内部函数从不返回任何内容
只需更换trips.add(计数器)代码>带返回计数器
应该可以解决这个错误。您可能还想稍微重构一下您的函数:
List\u calculateTrips()=>List.generate(30,(索引{
var计数器=0;
var aDay=DateTime.now().subtract(持续时间(天数:索引));
用于(步行时的var aWalk){
如果((日月==预警月)&&(日日==预警日)){
计数器++;
}
}
返回计数器;
});
非常有用。谢谢!