【问题标题】:Error Dart/Flutter: 'context != null': is not true错误 Dart/Flutter: 'context != null': 不正确
【发布时间】:2020-01-06 17:44:06
【问题描述】:

我尝试在每次重复项目时应用对话框警报,但是当我进行测试时它最终给出了这个错误,有没有人有任何关于如何解决这个问题的提示?

 void SalvarMensagem() async {
    // select id_armarios from armarios where numero_serie = '$_numeroSerie'

    this._status = _status;
    _numeroSerie = _status.substring(48, 80);

    final QuerySnapshot result = await Future.value(Firestore.instance
        .collection("lockers")
        .where("numero_serie", isEqualTo: "$_numeroSerie")
        .limit(1)
        .getDocuments());

    final List<DocumentSnapshot> documents = result.documents;
    if (documents.length == 1) {
      duplicado(context);
    } else {
      await Firestore.instance
          .collection("lockers")
          .document()
          .setData({"numero_serie": _numeroSerie});
    }
  }

duplicado(BuildContext context){
  Alert(
    context: context,
    type: AlertType.error,
    title: "QR Code já cadastrado",
    buttons: [
      DialogButton(
        child: Text(
          "OK",
          style: TextStyle(color: Colors.white, fontSize: 20),
        ),
        onPressed: () => Navigator.pop(context),
        color: Colors.lightBlueAccent,
        width: 120,
      )
    ],
  ).show();
}

错误:

E/flutter ( 9129): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: 'package:flutter/src/widgets/localizations.dart': Failed assertion: line 446 pos 12: 'context != null': is not true.

【问题讨论】:

  • 446是哪一行?
  • 这个Alert 小部件来自哪里?使用showDialog(context:, builder:) 不起作用?
  • 我正在使用该功能(重复),但从来没有工作

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:
duplicate(context, title, content) {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: new Text(
          title,
        ),
        content: Padding(
          padding: const EdgeInsets.all(8.0),
          child: new Text(
            content,
          ),
        ),
        actions: <Widget>[
          new FlatButton(
            child: new Text(
              "OK",
              style: TextStyle(color: Colors.white),
            ),
            onPressed: () {
              Navigator.of(context).pop();
            },
            color: Colors.lightBlueAccent,
          ),
        ],
      );
    },
  );
}

更改您的警报功能并使用duplicate(context,"QR Code já cadastrado","The content you wanted or delete it") 调用它应该没问题。您可以通过函数参数更改标题和内容。

【讨论】:

  • 您可以尝试使用Future&lt;void&gt; SalvarMensagem() async { 代替这个void SalvarMensagem() async { 吗?
猜你喜欢
  • 2023-01-08
  • 2021-06-08
  • 2020-12-30
  • 2021-07-08
  • 2020-03-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 2019-03-12
相关资源
最近更新 更多