dart 无法启动Alice HTTP检查器,请将NavigatorKey添加到应用程序中

4nkexdtk  于 10个月前  发布在  其他
关注(0)|答案(2)|浏览(47)

navigatorKey已经添加到代码中,但它仍然在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();
});
}
ujv3wf0j

ujv3wf0j1#

将navigatorKey更改为key:
你的代码必须看起来像下面这样:

@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();
});
}
mctunoxg

mctunoxg2#

使用http包http:任何版本
1.创建新类(APIConstant),然后在类中使用此代码

static Alice alice=Alice(
    showShareButton: true,
    showNotification: true,
  );

1.在main.dart中使用此代码
navigatorKey: APIConstant.alice.getNavigatorKey(),
1.如下:
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;
  }

相关问题