我正在尝试在re = "^([+-]?%d*%.?%d+)%.?$"
v = {'123', '23.45', '.45', '-123', '-273.15', '-.45', '+516', '+9.8', '+.5', -- regular matches
'34.', '+2.', '-42.', --only matched by prolematic last optional dot
'.', '-.', '+.', ' ', '', --expected no matches
'.12.', '+.3.', '-.1.', --false positives (strictly speaking)
'+1.23.45' -- no matches
}
for i, v in ipairs(v) do
n = v:match (re)
print (n)
end
内使用ListView
在ListView.builder
中显示项目。我的FutureBuilder
的{{1}}函数如下所示:
future
我的FutureBuilder
如下:
_fetchListItems() async {
wait() async {
number = await db.getNumber(userId); }
await wait();
List rawFavouriteList = await db.getList(number);
setState((){
rawFavouriteList.forEach((item){
_faouriteList.add(Model.map(item));
}});
return _faouriteList;
}
以下声明引发了对FutureBuilder(dirty,state: 我/颤振(24728):_FutureBuilderState#f12a3): I / flutter(24728):构建函数返回null。 I / flutter(24728):令人讨厌的小部件是:FutureBuilder I / flutter(24728):构建函数绝不能返回null
引发了另一个异常:构建函数返回null。
注意:
我试图从FutureBuilder
打电话给 FutureBuilder(
future: _fetchListItems(),
builder:(context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {Container( child: ListView.builder(
itemCount: _faouriteList.length,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext context, int index) {
return Text(
'${_faouriteList[index].title}');
}));}})
,但没有使用_fetchListItems()
,这对我也不起作用。
以下是该情况的链接:(Flutter/Dart) Two async methods in initState not working
请让我知道我应该使用initState
还是FutureBuilder
等待FutureBuilder
加载数据。以及如何使它起作用,因为似乎没有一种方法对我有用:(
答案 0 :(得分:0)
对于您的情况,不必使用setState,请尝试以下操作:
获取异步功能
_fetchListItems() async {
number = await db.getNumber(userId);
List rawFavouriteList = await db.getList(number);
List _faouriteList = rawFavouriteList.map((item)=>Model.map(item)).toList();
return _faouriteList;
}
FutureBuilder
FutureBuilder(
future: _fetchListItems(),
builder: (context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {
Container(
child: ListView.builder(
itemCount: snapshot.data.length,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext context, int index) {
return Text('${snapshot.data[index].title}');
}));
}
});
答案 1 :(得分:0)
据我所知,您的获取_fetchListItems
方法不是问题。
您的错误消息非常清楚,“构建函数返回null”。在这种情况下,返回null的方法是作为构建器参数传递给FutureBuilder
的匿名函数。您只是在else案例中缺少了return
关键字,因为您只是在创建Container
的实例,而不返回它。
类似这样的东西:
FutureBuilder(
future: _fetchListItems(),
builder:(context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {
return Container(
child: ListView.builder(
itemCount: _faouriteList.length,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext context, int index) {
return Text('${_faouriteList[index].title}');
}
)
);
}
}
)
我不知道您的代码是否还有其他问题,但这应该可以解决您所询问的特定错误消息。