【问题标题】:Flutter - 'showSnackBar' is deprecated - how to update?Flutter - 'showSnackBar' 已弃用 - 如何更新?
【发布时间】:2021-06-17 08:46:54
【问题描述】:

我的 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),
  ));

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

【问题讨论】:

    标签: flutter updates snackbar


    【解决方案1】:

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

    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),
        ),
    );
    
    

    【讨论】:

      【解决方案2】:

      您可以在您的应用中使用 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);
      

      【讨论】:

        【解决方案3】:

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

        新的覆盖构建:

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

        老sn-p:

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

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

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 2021-04-30
            • 1970-01-01
            • 1970-01-01
            • 2019-06-01
            • 2019-07-03
            • 2020-03-29
            • 2018-03-02
            • 1970-01-01
            • 2021-04-16
            相关资源
            最近更新 更多