如何解决想要在没有按钮的情况下进行共享的pref工作
FutureBuilder(
future: Future.delayed(Duration(seconds: 3)),builder: (c,s) =>
s.connectionState != ConnectionState.done
? Center(child: CircularProgressIndicator())
: nextPage()
当我指向nextPage()
函数时,我的FutureBuilder
抛出错误。
这是我的nextPage()
函数,它指向FutureBuilder
:
nextPage() async{
bool visitedFlag = await getVIsitingFlag();
setVIsitingFlag();
if (visitedFlag == true) {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => HomeScreen()));
}
else {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => NewScreen()));
}
}
错误是:
“ Future”类型不是“ Widget”类型的子类型
解决方法
感谢@Hiwa Jalal。返回小部件之前,需要在build方法中调用goToPage()方法。
Future goToPage() async {
bool visitedFlag = await getVIsitingFlag();
setVIsitingFlag();
if (visitedFlag == true) {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => HomeScreen()));
} else {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => NewScreen()));
}
}
@override
Widget build(BuildContext context) {
// You will call it in here!
goToPage();
return MaterialApp(
title: 'Title',home: Scaffold(
body: Container(),),);
}
编辑:
好的,您需要保持简单。
FutureBuilder(
future: Future.delayed(Duration(seconds: 3)).then((response) {
nextPage();
}),builder: (context,snapshot) {
if (snapshot.hasData) {
return null;
} else if (snapshot.hasError)
return Text(snapshot.error.toString());
return CircularProgressIndicator();
},);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。