Я успешно протестировал и создал свое первое приложение с Flutter. Протестировано как на Simulator (Pixel 3 API 29), так и на тесте для запуска его непосредственно на моем телефоне, который является Mi A2 с Android v9. У меня нет проблем с использованием приложения и всех функций, но когда я создаю файл APK с помощью Android Studio - Build - Flutter - Build APK file, а затем устанавливаю его на тот же телефон, и я пытаюсь войти в систему, я получаю сообщение об ошибке - Произошла ошибка. Повторите попытку . Я использую свой собственный API и сервер для связи с приложением, и я создаю запись отладки в БД каждый раз, когда приложение отправляет запрос на сервер, но при использовании установленного файла APK я даже не получаю запись что приложение достигает сервера. Я новичок в Flutter / Android Studio, и было бы здорово, если бы вы могли помочь мне отладить эту проблему.
Это мой код, который я написал для входа в систему на случай, если он вам понадобится
Future<void> _submit() async {
if (!_formKey.currentState.validate() &&
(_authMode == AuthMode.Login || _authMode == AuthMode.Signup)) {
print('Validation Failed');
// Invalid!
return;
}
if (!_agreeWithTerms && _authMode == AuthMode.Signup) {
ErrorDialog()
.showErrorDialog(context, 'Agree with Terms and Conditions');
return;
}
_formKey.currentState.save();
setState(() {
_isLoading = true;
});
try {
if (_authMode == AuthMode.Login) {
// Log user in
await Provider.of<Auth>(context, listen: false)
.signin(_authData['email'], _authData['password']);
} else if (_authMode == AuthMode.Signup) {
// Sign user up
await Provider.of<Auth>(context, listen: false).signup(
_authData['email'],
_authData['password'],
_authData['name'],
_authData['phone']);
} else {
await Provider.of<Auth>(context, listen: false)
.forgotPass(_authData['email']);
showDialog(
context: context,
builder: (ctx) => AlertDialog(
title: Text('Forgot password'),
content: SingleChildScrollView(
child: Text('You will receive an email. Follow the instructions')),
actions: <Widget>[
FlatButton(
child: Text('OK'),
onPressed: () {
Navigator.of(context).pushReplacementNamed('/auth');
},
),
],
),
);
return;
}
Navigator.of(context).pushReplacementNamed('/qr');
} on HttpException catch (error) {
print(error);
var errorMessage = 'Възникна грешка';
if (error.toString().contains('EMAIL_EXISTS')) {
errorMessage = 'This email already exists';
}
ErrorDialog().showErrorDialog(context, errorMessage);
} catch (error) {
print(error);
// I am getting error, but I don't know how to debug using
// the APK and see what is inside this error value
const errorMessage = 'There was an error, please try again';
ErrorDialog().showErrorDialog(context, errorMessage);
}
setState(() {
_isLoading = false;
});
}
Я использую Flutter и Android Studio. Это мой вывод из flutter docktor
doctor --verbose
[✓] Flutter (Channel stable, v1.12.13+hotfix.7, on Linux, locale bg_BG.UTF-8)
• Flutter version 1.12.13+hotfix.7 at /home/dimitar/flutter
• Framework revision 9f5ff2306b (преди 3 дена), 2020-01-26 22:38:26 -0800
• Engine revision a67792536c
• Dart version 2.7.0
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /home/dimitar/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: /usr/local/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
• All Android licenses accepted.
[✓] Android Studio (version 3.5)
• Android Studio at /usr/local/android-studio
• Flutter plugin version 42.1.1
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
[!] Connected device
! No devices available
! Doctor found issues in 1 category.
Process finished with exit code 0
Обновление : я получаю эту ошибку, когда создаю файл APK, но файл создан, и я успешно установил его. Я не знаю, имеет ли эта ошибка какое-либо отношение к моей проблеме
flutter / .pub-cache / hosted / pub.dartlang.org / shared_preferences-0.5.6 + 1 / android / src /main/java/io/flutter/plugins/sharedpreferences/SharedPreferencesPlugin.java:25: warning: [deprecation] getFlutterEngine () в FlutterPluginBinding устарел setupChannel (binding.getFlutterEngine () (getDartExteA) () ));
^ 1 предупреждение
Примечание. Некоторые входные файлы используют или отменяют устаревший API.
Примечание. Перекомпилируйте с -Xlint: устаревание для деталей.
Обновление 2 : я понизил версию shared_preferences до ^ 0.5.3 + 5 и больше не вижу упоминания об ошибке выше при создании приложения, но у меня все еще есть та же проблема.