“showSnackBar”已弃用,不应使用

scu*_*ool 22 flutter

试图找出这个颤振问题。下面的代码已弃用 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"))
                      );
                    }
                  },
Run Code Online (Sandbox Code Playgroud)

Joe*_*ler 45

根据此处文档,新的 ScaffoldMessenger 似乎可以处理其下方的所有 SnackBar。如果您没有多个 ScaffoldMessengers,您应该能够调用:

ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Login failed")));
Run Code Online (Sandbox Code Playgroud)


Mah*_*ahi 14

根据官方文档:

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

显示小吃栏的新方式:

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

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

_scaffoldkey.currentState.showSnackBar(snackbar);
Run Code Online (Sandbox Code Playgroud)

这已经不能用了,避免它并使用新的方式代替。


小智 6

这是将小吃店添加到脚手架的新方法。

ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text("Incremented"), duration: Duration(milliseconds: 300), ), );
Run Code Online (Sandbox Code Playgroud)

_key.currentState.ShowSnackBar(snackbar)现在已经过时。