升级 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”。
答案 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,并且脚手架将负责渲染小吃店。