【问题标题】:how to show snackbar message in flutter如何在颤动中显示小吃店消息
【发布时间】:2021-06-03 21:37:02
【问题描述】:

我试图在用户单击按钮时显示小吃栏,但我不能这样做。

我没有收到警告或错误,我不知道我错过了什么

这是我的代码:

RaisedButton(
   onPressed: () {
     if (formKey.currentState.validate()) {
       formKey.currentState.save();
       dbHelper
         .addNote(Notes(categoryID, notBaslik,
              notIcerik, "", selectedOncelik))
         .then((savedNoteID) {
       if (savedNoteID != 0) {
         _scaffoldKey.currentState
             .showSnackBar(SnackBar(
         content: Text("Not Eklendi"),
         duration: Duration(seconds: 2),
         ));
        } else {}
        Navigator.pop(context);
       });
      }
     },
     child: Text("Kaydet"),
     color: Colors.red),
 

【问题讨论】:

  • 你能确认savedNoteID不是0吗?
  • @lrsvmb 可以,我成功将记录添加到数据库
  • @TolgaKÜÇÜK 警告/错误是什么?
  • 错误是什么?在您编写小吃店的地方发布您的 logcat 和小吃店代码
  • 我在我的问题中提到我没有收到任何消息或警告

标签: android sqlite flutter dart snackbar


【解决方案1】:

确保您在小部件树中定义了一个 Scaffold,您试图在其中显示小吃栏,并且 _scaffoldKey 作为属性添加到您的脚手架,即

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

Scaffold(key: _scaffoldKey, body: ...)

您也可以使用Scaffold.of(context)

Scaffold.of(context).showSnackBar(SnackBar(content: Text("Not Eklendi"), duration: Duration(seconds: 2));

喜欢:

RaisedButton(
   onPressed: () {
     if (formKey.currentState.validate()) {
       formKey.currentState.save();
       dbHelper
         .addNote(Notes(categoryID, notBaslik,
              notIcerik, "", selectedOncelik))
         .then((savedNoteID) {
       if (savedNoteID != 0) {
         Scaffold.of(context).showSnackBar(SnackBar(
         content: Text("Not Eklendi"),
         duration: Duration(seconds: 2),
         ));
        } else {}
        Navigator.pop(context);
       });
      }
     },
     child: Text("Kaydet"),
     color: Colors.red),

在某些情况下,您需要将其包装在 Builder 小部件中以获得正确的 context。如果仍然无法正常工作,您可以尝试一下

【讨论】:

  • 我试过 Scaffold.of(context).showSnackBar 也定义了 _scaffoldKey 并添加了我的脚手架树,但它不起作用。
【解决方案2】:

初始化一个变量

final _scaffoldKey = GlobalKey<ScaffoldState>();

_scaffoldKey 添加到脚手架

Scaffold(
key: _scaffoldKey,
)

代码

RaisedButton(
   onPressed: () {
     if (formKey.currentState.validate()) {
       formKey.currentState.save();
       dbHelper
         .addNote(Notes(categoryID, notBaslik,
              notIcerik, "", selectedOncelik))
         .then((savedNoteID) {
       if (savedNoteID != 0) {
        final snackBar = SnackBar(content: Text("Test"));
        _scaffoldKey.currentState.showSnackBar(snackBar);
       
        } else {}
        Navigator.pop(context);
       });
      }
     },
     child: Text("Name"),
     color: Colors.red),

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2020-05-22
    • 2020-10-15
    • 2022-10-08
    • 2020-04-06
    • 2016-04-01
    • 2018-05-04
    • 2020-05-18
    • 2020-04-07
    相关资源
    最近更新 更多