FutureBuilder中的build方法,死循环
FutureBuilder in the build method, infinite loop
我正在尝试使用 futurebuilder 从数据库中获取数据,然后在加载数据后将其显示在屏幕上。我目前在构建方法中有我的 futurebuilder,但它创建了一个无限循环。
这是我构建的内容:
try {
initUser();
initRead();
return Scaffold(
body: new SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(16.0),
child: FutureBuilder(
future: _read(),
builder: (BuildContext context, snapshot) {
List<Widget> children;
if (snapshot.hasData && !snapshot.hasError) {
children = <Widget>[showImage()];
} else {
children = <Widget>[
_showCircularProgress(),
];
}
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: children,
),
);
}),
),
),
);
} catch (e) {
print(e.toString());
return Container();
}
如何使用此 FutureBuilder 来检查 _read()
何时完成而不会出现此无限循环?谢谢!
您 return 您的专栏所在的行不在您的 if (snapshot.hasData && !snapshot.hasError)
行内,请尝试将其包括在内
所以,
if (snapshot.hasData && !snapshot.hasError) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: showImage(),
),
);
}),
} else {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: _showCircularProgress(),,
),
);
}),
}
我正在尝试使用 futurebuilder 从数据库中获取数据,然后在加载数据后将其显示在屏幕上。我目前在构建方法中有我的 futurebuilder,但它创建了一个无限循环。
这是我构建的内容:
try {
initUser();
initRead();
return Scaffold(
body: new SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(16.0),
child: FutureBuilder(
future: _read(),
builder: (BuildContext context, snapshot) {
List<Widget> children;
if (snapshot.hasData && !snapshot.hasError) {
children = <Widget>[showImage()];
} else {
children = <Widget>[
_showCircularProgress(),
];
}
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: children,
),
);
}),
),
),
);
} catch (e) {
print(e.toString());
return Container();
}
如何使用此 FutureBuilder 来检查 _read()
何时完成而不会出现此无限循环?谢谢!
您 return 您的专栏所在的行不在您的 if (snapshot.hasData && !snapshot.hasError)
行内,请尝试将其包括在内
所以,
if (snapshot.hasData && !snapshot.hasError) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: showImage(),
),
);
}),
} else {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: _showCircularProgress(),,
),
);
}),
}