Не удается запустить Alice HTTP Inspector. Пожалуйста, добавьте NavigatorKey в ваше приложение
Navigator Key уже был добавлен в код, но он показывает ошибку (красная линия) под navigatorKey.
@override
Widget build(BuildContext context) {
return WillPopScope(
navigatorKey: _alice.getNavigatorKey(),
child: Theme(
data: ThemeData(
brightness: Brightness.light,
primarySwatch: AppColor.appColor,
primaryColor: AppColor.white,
buttonTheme: ButtonThemeData().copyWith(
buttonColor: AppColor.appColor,
textTheme: ButtonTextTheme.primary),
fontFamily: "EncodeSans",
),
child: layout()),
onWillPop: () {
return handleBackPress();
});
}
2 ответа
Сменить навигаторКлюч на ключ:
ваш код должен выглядеть следующим образом:
@override
Widget build(BuildContext context) {
return WillPopScope(
key: _alice.getNavigatorKey(), // here i replace key with navigatorKey
child: Theme(
data: ThemeData(
brightness: Brightness.light,
primarySwatch: AppColor.appColor,
primaryColor: AppColor.white,
buttonTheme: ButtonThemeData().copyWith(
buttonColor: AppColor.appColor,
textTheme: ButtonTextTheme.primary),
fontFamily: "EncodeSans",
),
child: layout()),
onWillPop: () {
return handleBackPress();
});
}
Использовать http-пакет http: любая версия
- Создайте новый класс (APIConstant), а затем используйте этот код в классе.
static Alice alice=Alice(
showShareButton: true,
showNotification: true,
);
Используйте этот код в main.dart
navigatorKey: APIConstant.alice.getNavigatorKey(),
Так:
if (kDebugMode) APIConstant.alice.onHttpResponse(response, body: jsonEncode(sendOtpReq));
Future<SendOtpModels?> sendOtpApi(SendOtpReq sendOtpReq) async {
try {
CustomLoader.showLoader("Please wait");
final response = await http.post(Uri.parse(APIConstant.sendOtp),
headers: APIConstant.authHeader,
body: jsonEncode(sendOtpReq),
);
if (kDebugMode) APIConstant.alice.onHttpResponse(response, body: jsonEncode(sendOtpReq));
const utf8Decoder = Utf8Decoder(allowMalformed: true);
final decodedBytes = utf8Decoder.convert(response.bodyBytes);
Map<String, dynamic> responseBody = json.decode(decodedBytes);
if (response.statusCode == 200) {
CustomLoader.closeLoader();
return SendOtpModels.fromJson(responseBody);
}
}
on TimeoutException catch (e) {
CustomLoader.closeLoader();
CustomLoader.showToast(e.message.toString());
} catch (e) {
CustomLoader.closeLoader();
CustomLoader.showToast(e.toString());
}
return null;
}