Flutter 在TextFormField和InputEdition中显示实际值
有没有办法简单地将hintText转换为实际值?我从另一个类(上一个屏幕,用户在其中输入给定值)获取${widget.message},然后希望对其进行硬编码。我尝试在TextFormField中使用initialValue,但无法使其工作 在控制器前面写入initialValue:${widget.message}时,我得到“失败的断言:第196行位置15:'initialValue==null | | controller==null”:不是真的。”Flutter 在TextFormField和InputEdition中显示实际值,flutter,Flutter,有没有办法简单地将hintText转换为实际值?我从另一个类(上一个屏幕,用户在其中输入给定值)获取${widget.message},然后希望对其进行硬编码。我尝试在TextFormField中使用initialValue,但无法使其工作 在控制器前面写入initialValue:${widget.message}时,我得到“失败的断言:第196行位置15:'initialValue==null | | controller==null”:不是真的。” 创建一个TextEditingContr
创建一个
TextEditingController
并在initState
中向其提供'${widget.message}'
值,然后通过设置属性enabled:false来禁用TextFormField
例如:
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key key, this.message}) : super(key: key);
final String message;
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
final text = TextEditingController();
@override
void initState() {
super.initState();
text.text = '${widget.message}'; //provide the controller the recived value in initState
}
@override
void dispose() {
text.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Center(
child: TextFormField(
controller: text,
enabled: false, //Set it to false so they can't further change it
decoration: InputDecoration(
border: OutlineInputBorder(),
),
),
),
),
);
}
}
类MyStatefulWidget扩展StatefulWidget{
constmystatefulwidget({Key-Key,this.message}):super(Key:Key);
最终字符串消息;
@凌驾
_MyStatefulWidgetState createState()=>\u MyStatefulWidgetState();
}
类_MyStatefulWidgetState扩展状态{
最终文本=文本编辑控制器();
@凌驾
void initState(){
super.initState();
text.text='${widget.message}';//在initState中向控制器提供接收到的值
}
@凌驾
无效处置(){
text.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
儿童:中心(
子项:TextFormField(
控制器:文本,
enabled:false,//将其设置为false,以便他们无法进一步更改它
装饰:输入装饰(
边框:OutlineInputBorder(),
),
),
),
),
);
}
}
没有控制器:,如果您已经有了控制器,只需使用其属性I需要控制器,因为它会进一步发送数据。已尝试TextEditingController nameController=TextEditingController(文本:${widget.message}”),但也不起作用。我按照上面的例子做了。
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key key, this.message}) : super(key: key);
final String message;
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
final text = TextEditingController();
@override
void initState() {
super.initState();
text.text = '${widget.message}'; //provide the controller the recived value in initState
}
@override
void dispose() {
text.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Center(
child: TextFormField(
controller: text,
enabled: false, //Set it to false so they can't further change it
decoration: InputDecoration(
border: OutlineInputBorder(),
),
),
),
),
);
}
}