Http 有没有一种简单的方法可以在变量的textformfield中获取initialvalue?
我刚开始学习颤振,我正在做一个个人资料页面,我正在提出一个请求。我正在尝试创建一个编辑配置文件页面,这样每当我去那里时,textformfield的值都会被填写好。起初我认为最好为initialvalue使用占位符。但是我在想,这对用户体验不好。我希望textformfields中填写正确的数据。因此,如果用户想要更新其信息,则填写字段。我发出了一个http post请求,并得到了正确的值。但奇怪的是,我不明白为什么我可以在labeltext中加载变量,但不能在initialvalue中加载它们 我尝试过寻找解决方案,我也尝试过一个futurebuilder,但我无法实现。我希望有人能帮我Http 有没有一种简单的方法可以在变量的textformfield中获取initialvalue?,http,dart,flutter,Http,Dart,Flutter,我刚开始学习颤振,我正在做一个个人资料页面,我正在提出一个请求。我正在尝试创建一个编辑配置文件页面,这样每当我去那里时,textformfield的值都会被填写好。起初我认为最好为initialvalue使用占位符。但是我在想,这对用户体验不好。我希望textformfields中填写正确的数据。因此,如果用户想要更新其信息,则填写字段。我发出了一个http post请求,并得到了正确的值。但奇怪的是,我不明白为什么我可以在labeltext中加载变量,但不能在initialvalue中加载它们
Expanded(
child: Container(
child: new TextFormField(
onSaved: (input) => _voornaam = input,
initialValue: '$voornaam',
decoration: InputDecoration(
labelText: '$voornaam'),
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold),
),
),
flex: 2,
),
我希望在我的textformfield中得到$voornaam的值。但实际上,当我加载它时,它返回空值。我的http请求正在工作,因为该值已放入labeltext。如果某人您有打字错误,此代码应该可以工作:
void main() => runApp(MaterialApp(
home: App(),
));
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
String _voornaam = 'Helo';
@override
void initState() {
super.initState();
// set you _voornaam value
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('text'),
),
body: Container(
child: new TextFormField(
onSaved: (input) => setState(() {
_voornaam = input;
}),
initialValue: '$_voornaam',
decoration: InputDecoration(labelText: '$_voornaam'),
style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold),
),
),
);
}
}
void main()=>runApp(MaterialApp(
主页:App(),
));
类应用程序扩展StatefulWidget{
@凌驾
_AppState createState();
}
类_AppState扩展了状态{
字符串_voornaam='Helo';
@凌驾
void initState(){
super.initState();
//设置您的\u voornaam值
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“文本”),
),
主体:容器(
子项:新建TextFormField(
onSaved:(输入)=>setState(){
_voornaam=输入;
}),
初始值:“$\u voornaam”,
装饰:输入装饰(标签文本:'$\u voornaam'),
样式:TextStyle(fontSize:16.0,fontWeight:fontWeight.bold),
),
),
);
}
}
将控制器
添加到TextFormField
中,在initState
中,您可以将其初始化为初始值-\u controller=textededitingcontroller(text:$voornaam)代码>这是我需要的方式。您知道有没有一种方法可以使用一个控制器来处理多个不同的初始值?无论如何,Thanx希望我能收到你的来信。你应该为不同的TextFormField
s使用不同的控制器,我想说,只有在提交或保存字段时才处理控制器值是一个好做法。别忘了处理你的控制器。非常感谢你的快速回复,我会尝试并练习用这种方式处理控制器。但是我必须发出一个编辑请求,这样用户就可以发送他的数据,如果他只想添加一个字母或什么的话,就不必再次键入他的值。使用controller
:)您应该可以很容易地做到这一点。此外,您还可以使用enabled标志来启用/禁用编辑。