我有一个像这样的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()或简单的进度/加载指示器吗?
类似这样的东西:
答案 0 :(得分:4)
TextFormEdit没有正确的属性,即Suffix小部件。 尽管如此,InputDecoration仍具有后缀属性,您可以在其中附加所需的任何进度小部件。 进入这里后,您可以直接在小部件中保持可见或不可见(以及其他设置)。
Text("$content", textAlign: lang=='ar'?TextAlign.right:TextAlign.left )
答案 1 :(得分:2)
支持@stefanodecillis,我也可以使用Stack
实现它 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(),
],
),
答案 2 :(得分:1)
在加载之前,将此变量添加到class 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: (_) {},
),