嗨我是新来的。
我正在使用Provider,并希望使用从中获得的数据作为textfield的初始值,因此我决定将控制器定义为一个可空值,并将文本放入initState()
中。
下面是代码。
...
TextEditingController? _lastNameController;
TextEditingController? _firstNameController;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
MyProvider myProvider = Provider.of(context, listen : false);
_lastNameController = TextEditingController(text : myProvider.lastName);
_firstNameController = TextEditingController(text : myProvider.firstName);
});
}
@override
Widget build(BuildContext context) {
return Row(
children : [
// this is an extension of TextField
MyTextField(controller : _lastNameController!, hintText : 'Last Name'),
const Spacer(),
MyTextField(controller : _firstNameController!, hintText : 'First Name')
...
我得到了一个异常Null check operator used on a null value
。
如果你有什么解决办法,请告诉我。
谢谢你,
1条答案
按热度按时间yjghlzjz1#
WidgetsBinding.instance.addPostFrameCallback
将在构建第一帧后调用。因此,最初MyTextField
从_lastNameController
和_firstNameController
获取空值。你能做到
或