Flutter - 'showSnackBar' 已弃用 - 如何更新?
Posted
技术标签:
【中文标题】Flutter - \'showSnackBar\' 已弃用 - 如何更新?【英文标题】: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
【问题讨论】:
【参考方案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(...)
【讨论】:
以上是关于Flutter - 'showSnackBar' 已弃用 - 如何更新?的主要内容,如果未能解决你的问题,请参考以下文章
将接口传递给`dispatch<ShowSnackbar>()` 时,Redux-thunk ThunkDispatch 类型失败
ScaffoldMessenger.of(context).showSnackBar() 在小部件构建函数中直接调用时不起作用