Flutter 颤振-TextFormField内的加载/进度指示器

Flutter 颤振-TextFormField内的加载/进度指示器,flutter,Flutter,我有这样一个TextFormField: TextFormField( cursorColor: Colors.black, decoration: InputDecoration( prefixIcon: Icon(Icons.email), errorMaxLines: 2, border: OutlineInputBorder( borderRadius: BorderRad

我有这样一个TextFormField:

TextFormField(
        cursorColor: Colors.black,
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.email),
          errorMaxLines: 2,
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10),
          ),
          errorBorder: OutlineInputBorder(
            borderSide: BorderSide(
              width: 2,
            ),
          ),
        ),
        autocorrect: false,
        onChanged: (_) {},
        validator: (_) {},
      ),
每当调用onChanged()时,这个TextFormField将从api获取一封电子邮件,因此我决定在其中放置一个进度/加载指示器,以指示它正在获取数据,但我很难理解如何实现它

那么,有没有一种方法可以在TextFormField中插入CircularProgressIndicator()或简单的进度/加载指示器

大概是这样的:


加载前,将此变量添加到类statefull小部件中

bool _isLoading = true; 
所以当你的邮件加载时

setState(){
   _isLoading = false;
}
和添加此文本字段代码

TextFormField(
            cursorColor: Colors.black,
            decoration: InputDecoration(
            prefixIcon: Icon(Icons.email),
            suffix: isLoading?CircularProgressIndicator():null,
              errorMaxLines: 2,
              border: OutlineInputBorder(
                borderRadius: BorderRadius.circular(10),
              ),
              errorBorder: OutlineInputBorder(
                borderSide: BorderSide(
                  width: 2,
                ),
              ),
            ),
            autocorrect: false,
            onChanged: (_) {},
            validator: (_) {},
          ),

TextFormEdit没有正确的属性,即后缀小部件。 尽管如此,InputDecoration仍然有后缀属性,您可以在其中附加任何您想要的进度小部件。 在这里,您可以直接在小部件中保持它的可见或不可见(以及一系列其他设置)

TextFormField(
        cursorColor: Colors.black,
        decoration: InputDecoration(
          prefixIcon: Icon(Icons.email),
          suffix: isLoading?CircularProgressIndicator():null
          errorMaxLines: 2,
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10),
          ),
          errorBorder: OutlineInputBorder(
            borderSide: BorderSide(
              width: 2,
            ),
          ),
        ),
        autocorrect: false,
        onChanged: (_) {},
        validator: (_) {},
      ),
道具,我也能够实现它使用

堆栈(
儿童:[
TextFormField(
光标颜色:颜色。黑色,
装饰:输入装饰(
前缀:图标(Icons.email),
errorMaxLines:2,
边框:大纲输入边框(
边界半径:边界半径。圆形(10),
),
errorBorder:OutlineInputBorder(
边界边(
宽度:2,
),
),
),
自动更正:错误,
一旦改变:({},
验证器:({},
),
(州:提交)
?定位(
前五名,
右:5,,
子:容器(
子对象:CircularProgressIndicator(),
),
)
:Container(),
],
),

我很想这样做,这似乎确实有效,但有没有办法将它放在textformfield的中心位置?你需要图标电子邮件和加载??或者只是其中的一个?我明白了,我花了我所有的时间研究TextFormEdit属性,找到适合这个用例的属性。谢谢你,伙计!
              Stack(
                children: <Widget>[
                  TextFormField(
                    cursorColor: Colors.black,
                    decoration: InputDecoration(
                      prefixIcon: Icon(Icons.email),
                      errorMaxLines: 2,
                      border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(10),
                      ),
                      errorBorder: OutlineInputBorder(
                        borderSide: BorderSide(
                          width: 2,
                        ),
                      ),
                    ),
                    autocorrect: false,
                    onChanged: (_) {},
                    validator: (_) {},
                  ),
                  (state.isSubmitting)
                      ? Positioned(
                          top: 5,
                          right: 5,
                          child: Container(
                            child: CircularProgressIndicator(),
                          ),
                        )
                      : Container(),
                ],
              ),