jds*_*flk 5 widget snackbar flutter
我想在我的 Flutter 应用程序中显示 SnackBar。我已阅读文档并复制它:\n
我的脚手架主体:
Widget build(BuildContext context) {\n return WillPopScope(\n onWillPop: () async => false,\n child: Scaffold(\n appBar: AppBar(\n centerTitle: true,\n title: Text("Oszt\xc3\xa1lyok"),\n leading: Padding(\n padding: const EdgeInsets.only(left: 5.0),\n child: IconButton(\n icon: Icon(Icons.exit_to_app, color: Colors.white70),\n onPressed: () {\n authService.signOut();\n authService.loggedIn = false;\n Navigator.push(\n context,\n MaterialPageRoute(\n builder: (context) => GoogleSignUp()));\n })),\n actions: <Widget>[\n Padding(\n padding: const EdgeInsets.only(right: 5.0),\n child: Row(\n children: <Widget>[\n IconButton(\n icon: Icon(Icons.add_circle_outline,\n color: Colors.white70),\n onPressed: () {\n createPopup(context);\n }),\n// IconButton(\n// icon: Icon(Icons.search, color: Colors.black38),\n// onPressed: null),\n ],\n )),\n ],\n ),\nRun Code Online (Sandbox Code Playgroud)\n\nSnackBarPage 类:
\n\nclass SnackBarPage extends StatelessWidget {\n\n void jelszopress(TextEditingController jelszoController, BuildContext context) async{\n var jelszo;\n DocumentReference docRef = \n Firestore.instance.collection(\'classrooms\').document(globals.getid());\n await docRef.get().then((value) => jelszo= (value.data[\'Jelszo\']) );\n if (jelszo == jelszoController.text.toString()){\n Navigator.push(context,\n MaterialPageRoute(builder: (context) => InClassRoom()));\n }\n else{\n Navigator.pop(context);\n\n\n final snackBar = SnackBar(content: Text(\'Yay! A SnackBar!\'));\n\n Scaffold.of(context).showSnackBar(snackBar);\n }\n }\nFuture<String> jelszoba(BuildContext context) {\n TextEditingController jelszoController = TextEditingController();\n return showDialog(\n context: context,\n builder: (context) {\n return AlertDialog(\n title: Text(\'Add meg a jelsz\xc3\xb3t\'),\n content: Container(\n decoration: BoxDecoration(\n borderRadius: BorderRadius.all(Radius.circular(20)),\n ),\n child: TextField(\n controller: jelszoController,\n decoration: InputDecoration(hintText: "Jelsz\xc3\xb3")\n )\n ),\n actions: <Widget>[\n MaterialButton(\n elevation: 5.0,\n child: Text(\'Mehet\'),\n onPressed: () {\n jelszopress(jelszoController, context);\n },\n )]);\n }\n );\n }\n\n var nevek;\n var IDS;\n SnackBarPage(this.nevek, this.IDS);\n @override\n Widget build(BuildContext context){\n return ListView.builder(\n itemCount: nevek.length,\n itemBuilder: (context, index) {\n return Card(\n child: ListTile(\n onTap: () {\n globals.setid(IDS[index]);\n jelszoba(context);\n\n },\n title: Text(nevek[index]),\n ),\n );\n },\n ) ;\n\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但我的 cody 不显示 SnackBar。我尝试了这个问题的解决方案:如何在 Flutter 中正确显示 Snackbar?但添加 Builder 小部件并没有帮助。
\n“Scaffold.of(context)”已被弃用,将返回 null。现在使用“ScaffoldMessenger.of(context)”。根据 Flutter 文档。
@override
Widget build(BuildContext context) {
// here, Scaffold.of(context) returns null
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: const Text('snack'),
duration: const Duration(seconds: 1),
action: SnackBarAction(
label: 'ACTION',
onPressed: () { },
),
));
},
child: const Text('SHOW SNACK'),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
注意:确保您的 main.dart 重写的 build() 函数应返回“MaterialApp”作为小部件,例如:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Must be MaterialApp widget for ScaffoldMessenger support.
return MaterialApp(
title: 'My App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyDashboard(),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5382 次 |
| 最近记录: |