setState () вызывается после dispose (): _StatefulBuilderState # 09642 (состояние жизненного цикла: не функционирует, не смонтирован)

Я показываю контент с нижним листом, я обновляю размер папки после его вычисления, используя setState statefulbuilder, я также использовал установленное условие, а затем также показывает setState после вызова dispose , Помогите мне это решить.

FileStat fileStat = selectedFilesAndFolders.last.statSync();
  String size = '0 KB';
  showModalBottomSheet(
      context: context,
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.only(
        topLeft: Radius.circular(12.0),
        topRight: Radius.circular(12.0),
      )),
      builder: (context) {
        return StatefulBuilder(builder: (context, newSetState) {
          getFolderSize(selectedFilesAndFolders.last.path).then((value) {
            if (!mounted) return;

            newSetState(() {
              size = value;
            });
          });

          return SingleChildScrollView(
            child: Column(
              children: [
                SizedBox(
                  height: 2.0,
                ),
                Text(
                  'Info',
                  style: TextStyle(
                    fontWeight: FontWeight.bold,
                  ),
                ),
                SizedBox(
                  height: 2.0,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Expanded(
                        child: Align(
                            alignment: Alignment.centerRight,
                            child: Text('Name: '))),
                    Expanded(
                        child: Text(path
                            .basename(selectedFilesAndFolders.last.path)))
                  ],
                ),
                SizedBox(
                  height: 2.0,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Expanded(
                        child: Align(
                            alignment: Alignment.centerRight,
                            child: Text('Size: '))),
                    Expanded(child: Text(size)),
                  ],
                ),
                SizedBox(
                  height: 2.0,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Expanded(
                        child: Align(
                            alignment: Alignment.centerRight,
                            child: Text('Last Modified Date: '))),
                    Expanded(child: Text(fileStat.modified.toString()))
                  ],
                ),
                SizedBox(
                  height: 2.0,
                ),
              ],
            ),
          );
        });
      });

person MSARKrish    schedule 09.09.2020    source источник


Ответы (1)


попробуйте следующее

if (!mounted){
    setState(() {
        size = value;
    }),
};
person ByteMe    schedule 09.09.2020
comment
если я использую вышеуказанное условие, то setState не будет работать, когда нижний лист открыт. Я пробовал твой код. теперь ошибка не пришла, но setState не вызывается для обновления размера. - person MSARKrish; 10.09.2020
comment
в своем коде вы вызвали newSetState, но, похоже, вам нужно позвонить setState, я обновил свой ответ, чтобы отразить это - person ByteMe; 10.09.2020