onChnaged 的值给我 null
value of onChnaged giving me null
当我点击凸起的按钮时,我正在打印 null。
如果用户未输入任何内容,我想查看初始值。
如果修改了 initialValue 那么 print 语句应该打印修改后的语句(它确实如此)。
代码:
class _HomeState extends State<Home> {
var _input;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: 'initial value ',
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input);
},
child: Text('Press me'),
)
],
),
);
}
}
不编辑 TextFormField 时的输出
flutter: null
编辑 TextFormField 时的输出
flutter: initial value test
如果用TextEditingController
就更好了。
final controller =
TextEditingController.fromValue(TextEditingValue(text: 'initial value '));
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
controller: controller,
onChanged: (text) {},
),
RaisedButton(
onPressed: () {
print(controller.text);
},
child: Text('Press me'),
)
],
),
);
}
更多关于 TextEditingController
。
如果你还在使用变量,初始化变量上的文本并使用它。
String _input = 'initial value ';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: _input,
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input);
},
child: Text('Press me'),
)
],
),
);
}
您也可以将其设置为可空并检查它是否为空,然后提供默认值,这在这种情况下似乎是不必要的。
String? _input;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: 'initial value ',
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input ?? 'initial value ');
},
child: Text('Press me'),
)
],
),
);
}
当我点击凸起的按钮时,我正在打印 null。
如果用户未输入任何内容,我想查看初始值。 如果修改了 initialValue 那么 print 语句应该打印修改后的语句(它确实如此)。
代码:
class _HomeState extends State<Home> {
var _input;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: 'initial value ',
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input);
},
child: Text('Press me'),
)
],
),
);
}
}
不编辑 TextFormField 时的输出
flutter: null
编辑 TextFormField 时的输出
flutter: initial value test
如果用TextEditingController
就更好了。
final controller =
TextEditingController.fromValue(TextEditingValue(text: 'initial value '));
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
controller: controller,
onChanged: (text) {},
),
RaisedButton(
onPressed: () {
print(controller.text);
},
child: Text('Press me'),
)
],
),
);
}
更多关于 TextEditingController
。
如果你还在使用变量,初始化变量上的文本并使用它。
String _input = 'initial value ';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: _input,
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input);
},
child: Text('Press me'),
)
],
),
);
}
您也可以将其设置为可空并检查它是否为空,然后提供默认值,这在这种情况下似乎是不必要的。
String? _input;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('hello')),
body: Column(
children: [
TextFormField(
initialValue: 'initial value ',
onChanged: (text) {
setState(() {
_input = text;
});
},
),
RaisedButton(
onPressed: () {
print(_input ?? 'initial value ');
},
child: Text('Press me'),
)
],
),
);
}