将我的颤振通道从 beta 更改为稳定后,错误开始出现

时间:2021-01-23 11:40:10

标签: flutter dart visual-studio-code

升级 Flutter 后,我从测试版转到了稳定的 Flutter 频道,

ListTile() 属性和 ScaffoldMassanger 出现错误,

 child: ListTile(
        horizontalTitleGap: 10, // error
        minVerticalPadding: 10, // error
        ),


  ScaffoldMessenger.of(context).showSnackBar(SnackBar(
    content: Text('success'),
    duration: Duration(seconds: 2),
  ));

我尝试了以下解决方案:

 flutter upgrade
 flutter clean
 flutter pub get
 reinstalled dart and flutter plugin in VSCode
 flutter run
 updated vscode

没有成功

删除折旧属性后的错误日志,

lib/widgets/list_expense.dart:32:9:错误:未为“_ListExpenseState”类定义 getter“ScaffoldMessenger”。

  • '_ListExpenseState' 来自 'package:XpenseTracker/widgets/list_expense.dart' ('lib/widgets/list_expense.dart')。 尝试将名称更正为现有 getter 的名称,或定义名为 'ScaffoldMessenger' 的 getter 或字段。 ScaffoldMessenger.of(context).showSnackBar(SnackBar(
  • )

1 个答案:

答案 0 :(得分:1)

这些属性已被删除,可以在类 (ListTile) 文档中看到: https://api.flutter.dev/flutter/material/ListTile/ListTile.html

请在这里查看这个包,以便使用这些属性: https://pub.dev/packages/list_tile_more_customizable

[编辑] 对于您的 Scaffold 问题,请尝试使用像这样的静态辅助函数,然后将字符串与 BuildContext 一起传递给渲染:

 static Future showSimpleSnackBar(
      String message, GlobalKey<ScaffoldState> contextState) async {
      final snackBar = SnackBar(
        content: Text(message),
        duration: Duration(seconds: 3),
        action: SnackBarAction(
          label: "Got it",
          onPressed: () {
            //invoke an action here...
          },
        ),
      );

  contextState.currentState.removeCurrentSnackBar(); 
  contextState.currentState.showSnackBar(snackBar);
  }

还要确保 BuildContext 来自 Global ScaffoldKey,并且脚手架将负责渲染小吃店。