Метод Flutter был вызван на ноль - PullRequest
0 голосов
/ 06 мая 2019

Я изучаю флаттер и пытаюсь реализовать экраны входа в систему. Я следую этой статье и добавляю Dio для вызовов API. Проблема заключается в том, что, когда я нажимаю кнопку «Вход в систему», я получаю сообщение об ошибке «NoSuchMethod: метод« authenticate »был вызван с нулевым значением».

Вот что я сделал.

UserRepository.dart

    Future<String> authenticate({
    @required String username,
    @required String password,
  }) async {
    await Future.delayed(Duration(seconds: 5));
    Map<String, String> body = {
      'username': username,
      'password': password,
      'rememberMe': "false"
    };

    LoginResponse response = await apiRepository.authenticate(body);
    print(response.toString());

    return 'token';
  }

А для ApiProvider.dart у меня есть это.

class ApiRepository {
  final String _baseUrl = "http://myserver/api";
  Dio _dio;

  ApiProvider() {
    BaseOptions options = new BaseOptions(
        baseUrl: _baseUrl, receiveTimeout: 5000, connectTimeout: 5000);
    _dio = new Dio(options);
  }

  Future<LoginResponse> authenticate(Map<String, String> body) async {
    try {
      Response response =
          await _dio.post(_baseUrl + "/authenticate", data: body);
      print(response.data);
      return LoginResponse.fromJson(response.data);
    } catch (error, stacktrace) {
      print("Exception occured: $error stackTrace: $stacktrace");
      return LoginResponse.withError(_handleError(error));
    }
  }

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 13 мая 2019

Я нашел ошибку, благодаря @Spectarion. Моя ошибка была в создании apiRepository.

Правильный путь ApiRepository apiRepository = new ApiRepository();

Шахта была ApiRepository apiRepository;

...