Как устранить ошибку (Поиск предка деактивированного виджета небезопасен).

#flutter #dart

Вопрос:

Я получаю эту ошибку и не знаю, как ее решить

"Exception has occurred. FlutterError (Looking up a deactivated widget's ancestor is unsafe. At this point the state of the widget's element tree is no longer stable. To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.)"

Я получаю это, когда нажимаю на одну из кнопок awesome dialog

почему, как я использую dialog после того, как пользователь выполнит поиск одного из сотрудников в базе данных с search delegate помощью приложения, он проверит, существует ли сотрудник в базе данных или нет, и в каждом случае я получаю информацию о покупке awesome dialog , но когда я нажимаю на одну из кнопок, я получаю сообщение об ошибке

пожалуйста, помогите, я не знаю, как решить эту проблему, я знаю, что мне чего-то не хватает

вот метод в том search delegate месте, где я получаю ошибку

 Widget buildSuggestions(BuildContext context) {
    List filternames = b!
        .where((element) => element[0].startsWith(query.toUpperCase()))
        .toList();

    List filteridnumber =
        b!.where((element) => element[1].startsWith(query)).toList();
    return ListView.builder(
        itemCount: query == ""
            ? b!.length
            : filternames.length == 0
                ? filteridnumber.length
                : filternames.length,
        itemBuilder: (context, i) {
          return InkWell(
            onTap: () async {
              close(context, null);
              print("the filternames table is $filternames");
              print("the filteridnumbers table is $filteridnumber");
              if (filternames.length != 0) {
                query = filternames[i][0];
                print("query is $query");
                theemployeechoosen = filternames[i][1];
                print(" theemployeechoosen is $theemployeechoosen");
              } else {
                query = filteridnumber[i][0];
                print("query is $query");
                theemployeechoosen = filteridnumber[i][1];
                print(" theemployeechoosen is $theemployeechoosen");
              }
              int num = await getprefs();
              if (num == 1) {
                print("the employee is already an inventory assistant");
                AwesomeDialog(
                  context: context,
                  dialogType: DialogType.ERROR,
                  dialogBackgroundColor: Colors.red[100],
                  animType: AnimType.BOTTOMSLIDE,
                  btnOkColor: Colors.red,
                  title: 'هذا الشخص عون جرد بالفعل ',
                  desc: '   لا يمكن اضافة هذا الشخص لانه عون جرد في هذا العام',
                ).show();
              } else {
                print("the employee is not an inventory assistant");
                AwesomeDialog(
                  context: context,
                  dialogType: DialogType.INFO,
                  animType: AnimType.BOTTOMSLIDE,
                  title: 'Dialog Title',
                  desc: 'Dialog description here.............',
                  btnCancelOnPress: () {},
                  btnOkOnPress: () {},
                )..show();
              }
              showResults(context);
            },
            child: Container(
                padding: EdgeInsets.all(10),
                child: Container(
                  padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
                  child: filternames.length == 0
                      ? Text("${filteridnumber[i][0]}")
                      : Text("${filternames[i][0]}"),
                )),
          );
        });
  }