Flutter - 'showSnackBar' 已弃用 - 如何更新?

Flutter - 'showSnackBar' is deprecated - how to update?

我的main.dart中有一些过时的部分,我想更新它们,但需要一点帮助,因为我的知识显然不够,希望有人能帮助我:-)

这部分快餐店已经过时了,正如您在消息中看到的那样。

'showSnackBar' is deprecated and shouldn't be used. Use ScaffoldMessenger.showSnackBar. This feature was deprecated after 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

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

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

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

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

新的覆盖版本:

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

旧片段:

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

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

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

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

ScaffoldMessenger.of(上下文).hideCurrentSnackBar() ScaffoldMessenger.of(上下文).showSnackbar(...) 而不是

Scaffold.of(上下文).hideCurrentSnackBar() Scaffold.of(上下文).showSnackbar(...)