当前位置: 首页 > 知识库问答 >
问题:

无法将元素类型“Future”分配给列表类型“Widget”

韦嘉颖
2023-03-14

我尝试了几种解决方案,但都不管用

   //this basically lays out the structure of the screen
   @override
    Widget build(BuildContext context) {
      return Scaffold(
    appBar: AppBar(),
    body: Container(
      alignment: Alignment.center,
      padding: const EdgeInsets.only(
        top: 30,
        bottom: 60,
      ),
      child: Column(
        children: [
          buildTitle(),
          SizedBox(
            height: 50,
          ),
          buildForm(),
          Spacer(),
          buildBottom(),
        ],
      ),
    ),
      );
    }

//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'),
                  ),
                ],
              ),
            );

共有1个答案

钱和安
2023-03-14

尝试使用FutureBuilder

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...*/);
      }
    }
  )
}
 类似资料:
  • 我对弗利特和我是新手;我一直在尝试开发一款带有PHP API后端的应用程序。在无数的答案和在线研究中,我无法找到解决我所面临问题的方法。我希望有人能告诉我我做错了什么。 我试图从API中获取数据,并将其显示在卡中。下面是我的代码: 希望能得到一些帮助。非常感谢。

  • 当我将值从主页传递到源页面时,它显示了一个错误:参数类型“Future”无法分配给参数类型“uluFunction()”。(argument_type_not_assignable[strong text]lib\home.dart:15) 我哪里做错了?? 主页- 下面的页面是我想使用主页值的地方-

  • 我试图制作一个简单的饼图,但在工厂构造函数中使用未来的数据时遇到了问题。错误信息显示: 预期有2个位置参数,但找到1个。 参数类型“未来” 以下是代码: 编辑:我能够使用Future Builder修复此问题。我的代码更改:

  • 问题内容: 我有一个关于将子类列表分配给超类列表的基本问题。 所以我有以下内容: 为什么最后一次分配失败?对不起,新手问题 问题答案: 为了解释这一点,让我用整数代替“ B”,用数字代替“ A”。这只是为了使其更容易解释。 失败的原因是因为nList可以采用任何Number;可以采用Integer;可以采用Double;或者就此而言,可以是Number的任何子类。但是,对于iList并非如此。您不

  • 问题内容: 这是我写该行时的错误: /ChatApp/ViewController.swift:27:42:无法将“ ViewController”类型的值分配给“ UITextFieldDelegate”类型的值? 这是我的Swift代码(ViewerController.swift): 问题答案: 该生产线将导致错误,因为你尝试分配作为的。 但是,你 是不是 一个。为了使您的课程成为此类委托,

  • 你好,我在小部件上的以下代码中出错 参数类型'List 这是我的代码 我的代码与上面的图表插件不兼容吗?如何解决这个问题?