如何解决无法将元素类型“Future<Widget>”分配给列表类型“Widget”解决此错误的给定解决方案均不适合我
我尝试了几种解决方案,但对我没有任何作用
//这基本上布局了屏幕的结构
@覆盖
小部件构建(BuildContext 上下文){
返回脚手架(
应用栏:应用栏(),
主体:容器(
对齐:Alignment.center,
填充:const EdgeInsets.only(
顶部:30,
底部:60,
),孩子:列(
孩子们: [
构建标题(),
大小盒(
身高:50,
),构建形式(),
间隔(),
构建底部(),
],),);
}
//problem is with buildForm
Future<Widget> buildForm() async {
final valid = await usernameCheck(this.username);
return Container(
width: 330,decoration: Boxdecoration(
color: Colors.white,borderRadius: BorderRadius.circular(8),child: Form(
key: _userNameformKey,child: TextFormField(
textAlign: TextAlign.center,onChanged: (value) {
_userNameformKey.currentState.validate();
},validator: (value) {
if (value.isEmpty ) {
setState(() {
onNextButtonClick = null;
});
}
else if(!valid){
setState(() {
//user.user.username=value;
onNextButtonClick = null;
showDialog(
context: context,builder: (context) =>
new AlertDialog(
title: new Text('Status'),content: Text(
'Username already taken'),actions: <Widget>[
new ElevatedButton(
onpressed: () {
Navigator.of(context,rootNavigator: true)
.pop(); // dismisses only the dialog and returns nothing
},child: new Text('OK'),],);
解决方法
尝试使用 FutureBuilder<T>
Widget build(_) {
return FutureBuilder<bool>(
future: usernameCheck(this.username),builder: (BuildContext context,AsyncSnapshot<bool> snapshot) {
if(!snapshot.hasData) { // not loaded
return const CircularProgressIndicator();
} else if(snapshot.hasError) { // some error
return const ErrorWidget(); // create this class
} else { // loaded
bool valid = snapshot.data;
return Container(/*...details omitted for conciseness...*/);
}
}
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。