“showSnackBar”已弃用,不应使用

问题描述

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

解决方法

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

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

是的,这是新的脚手架方式

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

根据官方文档:

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

显示小吃店的新方式:

import numpy as np
from sklearn.linear_model import LinearRegression
LR = LinearRegression()

data = np.arange(0,100)
x_train,y_train= np.split(data.sample(frac=1,random_state=1500),[int(0.7 * len(data))])
LR.fit(X_train,y_train)
LR.predict(x_train)

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

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

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