Flutter 空安全迁移 - top_snackbar_flutter

Flutter null-safety migration - top_snackbar_flutter

我执行了 dart 迁移以将我的项目更新为空安全。我有几个问题需要解决,因为这是一个旧项目。 但是,有一件事一直困扰着我,想不出办法。

我正在使用 top_snackbar_flutter 软件包并将其更新为 nullsafe 版本(最新的 v1.0.2)。

我有以下代码:

Widget showTopBarErrorWidget({required context, String? messageArg}) {
  showTopSnackBar(
      context,
      CustomSnackBar.error(
        message: messageArg ??
            "Error while starting the session Plans. Please try again",
      ),
      displayDuration: Duration(seconds: 5));
}

Widget showTopBarSuccessWidget({required context, String? messageArg}) {
  showTopSnackBar(
    context,
    CustomSnackBar.success(
      message: messageArg ?? "Success",
    ),
  );
}

此代码在多个地方被引用以查找错误,success.So希望修复此问题并消除与此小吃店相关的所有错误。

参考范例之一:

Future verifyIapPurchase({BuildContext? context, Map? body}) async {
    var _data = {"valid": false};
    try {
      final _res = await sl<ISubscriptionService>().verifyPurchase(body: body);
      return (_res != null && _res.data != null) ? _res.data : _data;
    } catch (err) {
      showTopBarErrorWidget(
          context: context,
          messageArg: err.message ?? "Failed to verify the subscription");
      return _data;
    }
  }

我得到的错误是:

我意识到这个函数实际上是无效的, 但我需要 return 一个小部件。我尝试添加 try 和 catch 块,但什么也没做。

Widget showTopBarErrorWidget({required context, String? messageArg}) {
  try {
    showTopSnackBar(
        context,
        CustomSnackBar.error(
          message: messageArg ??
              "Error while starting the session Plans. Please try again",
        ),
        displayDuration: Duration(seconds: 5));
  } on Exception catch (e) {
    print(e);
    rethrow;
  }
}

正如h8moss所说 您没有 showTopBarErrorWidget 中 return 的任何内容,因此删除 Widget return 类型并将其设置为 void

void showTopBarErrorWidget({required context, String? messageArg}) {

showTopSnackBar 无论如何都会执行,不需要 return 它或其他东西。