微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 'showSnackBar' 已弃用 - 如何更新?

如何解决Flutter - 'showSnackBar' 已弃用 - 如何更新?

我的 main.dart 中有一些过时的部分,我想更新它们,但需要一点帮助,因为我的知识显然不够,希望有人能帮助我 :-)

正如您在消息中看到的那样,这部分小吃店已过时。

'showSnackBar' 已弃用,不应使用。采用 ScaffoldMessenger.showSnackBar。此功能在之后被弃用 v1.23.0-14.0.pre...

这是我的main.dart的关联代码

  Navigator.of(context,rootNavigator: true).pop('dialog');
  Magazin.scaffoldKey.currentState!.showSnackBar(SnackBar(
    content: Text('BEIM LADEN DER POST-DATEN IST EIN FEHLER AUfgetRETEN!'),duration: Duration(seconds: 5),));

我在论坛上找到了这个疗法,但它并没有真正帮助我...... 'showSnackBar' is deprecated and shouldn't be used

解决方法

您可以使用此代码。如果您的其余代码当前可以工作,此代码没有任何问题

Navigator.of(context,rootNavigator: true).pop('dialog');
ScaffoldMessenger.of(context).showSnackBar(
     SnackBar(
          content:Text('BEIM LADEN DER POST-DATEN IST EIN FEHLER AUFGETRETEN!'),duration: Duration(seconds: 2),),);

,

对我来说,你需要用 ScaffordMessager(...) 包裹你的旧 Scaffold(...) 并不明显。一旦我这样做了,上面的迁移就很容易了。

新的覆盖构建:

@override
  Widget build(BuildContext context) {
    return ScaffoldMessenger(
      key: scaffoldMessengerKey,child: Scaffold(
      appBar: AppBar(

旧片段:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      key: scaffoldKey,appBar: AppBar(

希望这对下一个人有所帮助!

,

如果您使用 Flutter 2 或更高版本,您可能会看到有关 hideCurrentSnackBar() 和 showSnackbar() 方法的弃用警告。

您可以使用以下方法摆脱它们:

ScaffoldMessenger.of(context).hideCurrentSnackBar() ScaffoldMessenger.of(context).showSnackbar(...) 而不是

Scaffold.of(context).hideCurrentSnackBar() Scaffold.of(context).showSnackbar(...)

,

您可以在您的应用中使用 Flushbar 实现此功能:flushbar

FlushbarHelper.createError(
       message: failure.map(
              cancelledByUser: (_) => 'Cancelled',serverError: (_) => 'Server error',emailAlreadyInUse: (_) => 'Email already in use',invalidEmailAndPasswordCombination: (_) =>
                  'Invalid email and password combination',).show(context);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。