我之前问过但事情已经改变了,今天我意识到我之前得到的解决方案存在严重问题。我的算法有点改变。
这是新代码:
@override
Widget build(BuildContext context) {
return Material(
child: FutureBuilder(
future: _future,
builder: (context, snapshot) {
if (snapshot.hasData) {
print('BOOT VALUE IS ${snapshot.data}');
}
return !snapshot.hasData
? SplashScreen()
: snapshot.data ? HomePage() : FirstScreen();
},
),
);
}
Run Code Online (Sandbox Code Playgroud)
使用此解决方案,每次我在 FutureBuilder 内有条件地呈现的页面内导航时,都会执行 BootScreen 页面函数。所以这不是最好的......我需要在 Future Builder 中毫无问题地执行 Navigation,如下所示:
@override
Widget build(BuildContext context) {
return Material(
child: FutureBuilder(
future: _future,
builder: (context, snapshot) {
if (snapshot.hasData) {
print('BOOT VALUE IS ${snapshot.data}');
}
return !snapshot.hasData
? SplashScreen()
: snapshot.data
? Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: …Run Code Online (Sandbox Code Playgroud)