【问题标题】:I want to use Provider in InitState() but got an exception: Null check operator used on a null value我想在 InitState() 中使用 Provider 但出现异常:空检查运算符用于空值
【发布时间】:2023-01-25 03:27:39
【问题描述】:

嗨,我是新手。

我正在使用 Provider 并希望使用从中获取的数据作为文本字段的初始值。所以我决定将控制器定义为可空值,并将文本放入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

如果您有任何解决方案,请告诉我。

谢谢,

【问题讨论】:

    标签: flutter


    【解决方案1】:

    WidgetsBinding.instance.addPostFrameCallback 将在构建第一帧后调用。所以最初 MyTextField_lastNameController_firstNameController 中得到 null。

    你可以做

     MyTextField(controller : _lastNameController??TextEditingController(),  
    

    或者

    if(_lastNameController!=null) MyTextField(controller : _lastNameController,  
    

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 2021-12-15
      • 2021-08-19
      • 1970-01-01
      • 2022-06-11
      • 2022-07-26
      • 2021-01-24
      • 2022-07-06
      相关资源
      最近更新 更多