错误 Dart/Flutter: 'context != null': 不正确

Posted

技术标签:

【中文标题】错误 Dart/Flutter: \'context != null\': 不正确【英文标题】: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:) 不起作用? 我正在使用该功能(重复),但从来没有工作 【参考方案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 吗?

以上是关于错误 Dart/Flutter: 'context != null': 不正确的主要内容,如果未能解决你的问题,请参考以下文章

[Dart] Flutter 上传文件

flutter - 如何在 dart/flutter 中收听流值

在 Dart/Flutter 中解析嵌套的 JSON

如何在 Dart/Flutter 中读取本地图像文件的字节数?

forEach() 循环的 Dart/Flutter 批处理?

Dart / Flutter - 验证URL的字符串