【问题标题】:'showSnackBar' is deprecated and shouldn't be used'showSnackBar' 已弃用,不应使用
【发布时间】:2021-04-30 13:13:04
【问题描述】:

试图解决这个颤振问题。下面的代码已弃用 showSnackbar,我试图找出修复方法。第二个代码是我解决问题的尝试。一个新问题出现了“没有为类型 'ScaffoldState' 定义 getter 'ScaffoldMessenger'。”。错误告诉我要导入 material.dart 文件,但它已经被导入了。

感谢任何帮助。

              Padding(
                padding: const EdgeInsets.all(10.0),
                child: GestureDetector(
                  onTap: ()async{
                    if(!await authProvider.signIn()){
                      _key.currentState.showSnackBar(
                        SnackBar(content: Text("Login failed"))
                      );
                    }
                  },

              Padding(
                padding: const EdgeInsets.all(10.0),
                child: GestureDetector(
                  onTap: ()async{
                    if(!await authProvider.signIn()){
                      _key.currentState.ScaffoldMessenger.of(context).showSnackBar(
                        SnackBar(content: Text("Login failed"))
                      );
                    }
                  },

【问题讨论】:

    标签: flutter


    【解决方案1】:

    这是将snackBars 添加到脚手架的新方法。

    ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text("Incremented"), duration: Duration(milliseconds: 300), ), );
    

    现在不推荐使用_key.currentState.ShowSnackBar(snackbar)

    【讨论】:

      【解决方案2】:

      根据官方文档:

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

      显示小吃店的新方式:

      ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Enter somethong here to display on snackbar")));
      

      旧方法(使用脚手架键):

      _scaffoldkey.currentState.showSnackBar(snackbar);
      

      这个不能再用了,避开它,改用新的方式。

      【讨论】:

        【解决方案3】:

        基于documentation here,看起来新的 ScaffoldMessenger 处理了它下面的所有 SnackBar。如果您没有多个 ScaffoldMessenger,您应该可以调用:

        ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Login failed")));
        

        【讨论】:

        • 嗨乔,这正是我收到的错误消息。
        • 您是否尝试过不引用 _key.currentState ?我会尝试只使用 ScaffoldMessenger
        • 也为我工作,谢谢。这是否意味着不再需要 globalKey,对吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 2021-04-03
        • 1970-01-01
        • 2022-07-01
        • 2020-04-03
        • 1970-01-01
        • 2021-11-18
        相关资源
        最近更新 更多