Я изучаю флаттер и пытаюсь реализовать экраны входа в систему. Я следую этой статье и добавляю 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));
}
}
Спасибо за вашу помощь.