【问题标题】:Non-nullable instance field '_repository' must be initialized必须初始化不可为空的实例字段“_repository”
【发布时间】:2021-08-21 11:36:33
【问题描述】:

我是 Flutter 的初学者,正在尝试学习教程。 我陷入了以下错误:

我在 chat_service.dart 中有以下代码,用于从 Laravel/Mysql 获取 API:

import 'package:buschat/repository/repository.dart';

class ChatService {
  Repository _repository;
  ChatService() {
    _repository = Repository();
  }

  getAllChats() async {
    return await _repository.httpGet('get-all-chat');
  }
}

我在ChatService() 方法中收到以下错误:

Non-nullable instance field '_repository' must be initialized.
Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'

本教程运行良好,并且已经使用一年了。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    你应该试试……

    class ChatService {
      Repository _repository = Repository();
      ChatService() {
        getAllChats();
      }
    
      getAllChats() async {
        return await _repository.httpGet('get-all-chat');
      }
    }
    

    【讨论】:

    • 谢谢,会尽快测试并标记为已回答。
    【解决方案2】:

    由于 null 安全性,所有变量都必须初始化,除非它们被标记为可为 null。所以你需要给你的变量一个值或者使用late关键字,这意味着你需要稍后给它值,但你不能将它用作null:

    late Repository _repository;
    

    // not recommended use (you need to use dependency injection)
    Repository _repository = Repository();
    

    您还可以将变量标记为可空,以便将其用作空:

    Repository? _repository;
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 2021-09-14
      • 2021-09-24
      • 2021-10-11
      • 2021-08-27
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多