[解決済み] dispose() の後に setState() が呼ばれる。
2022-06-11 22:54:25
質問
レイズボタンをクリックすると、タイムピッカーが表示されます。ここで、例えば5秒待って、時間を確定すると、このようなエラーが発生します。 setState()がdispose()の後に呼び出されました。
flutter が親ウィジェットを更新しているのがコンソールでわかりますが、なぜでしょうか?私は何もしていません - ただ5秒待っているだけです! 下の例は通常のプロジェクトでは動作しますが、私のプロジェクトはかなり複雑で、私が待っている間にFlutterが状態を更新しているため動作しません...。 何が間違っているのでしょうか?誰か、Flutterが私の複雑なプロジェクトではランダムに更新し、シンプルなプロジェクトでは更新しない原因を知っていますか?
[UPDATE]です。
もう一度見てみたところ、私のサイトの
TabBar
と
TabBarView
があります。
もしかして、"と関係があるのでしょうか?
とTickerProviderStateMixinの
のために必要なものです。
TabBarView
? それは、アプリが定期的かつランダムに更新される原因となっている可能性がありますか?
class DateTimeButton extends State<DateTimeButtonWidget> {
DateTime selectedDate = new DateTime.now();
Future initTimePicker() async {
final TimeOfDay picked = await showTimePicker(
context: context,
initialTime: new TimeOfDay(hour: selectedDate.hour, minute: selectedDate.minute),
);
if (picked != null) {
setState(() {
selectedDate = new DateTime(selectedDate.year, selectedDate.month, selectedDate.day, picked.hour, picked.minute);
});
}
}
@override
Widget build(BuildContext context) {
return new RaisedButton(
child: new Text("${selectedDate.hour} ${selectedDate.minute}"),
onPressed: () {
initTimePicker();
}
);
}
}
どのように解決するのですか?
booleanプロパティをチェックするだけです。
mounted
を呼び出す前に、ウィジェットのステートクラスの
setState()
.
if (this.mounted) {
setState(() {
// Your state change code goes here
});
}
あるいは、よりクリーンな方法として
オーバーライド
setState
メソッドを
StatelfulWidget
メソッドに追加します。
class DateTimeButton extends StatefulWidget {
@override
void setState(fn) {
if(mounted) {
super.setState(fn);
}
}
}
関連
-
[解決済み】zsh: コマンドが見つかりません: flutter 【終了しました
-
[解決済み] Flutter give コンテナ 丸みを帯びたボーダー
-
[解決済み] flutterで文字に下線を引く方法
-
[解決済み] 水平スクロール フラッターのテキスト
-
[解決済み] Flutterでgoogleとyoutubeの両方にログインする
-
[解決済み】Scaffold.of()がScaffoldを含まないコンテキストで呼び出された場合
-
[解決済み】Flutterで角丸画像を作成する方法
-
[解決済み】Flutterアプリにスプラッシュスクリーンを追加する
-
[解決済み] Flutter SDK(Dart 1.x)をダウングレードする方法
-
[解決済み] Flutterで "すりガラス "のような効果を出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
flutter TextField 入力ボックスコンポーネント
-
[解決済み] FlutterでButtonを無効にするには?
-
[解決済み] Flutterで丸みを帯びたボタン/border-radius付きボタンを作成する
-
[解決済み】Scaffold.of()がScaffoldを含まないコンテキストで呼び出された場合
-
[解決済み】Flutterで角丸画像を作成する方法
-
[解決済み】FlutterでStatefulWidgetにデータを渡して、その状態のままアクセスする方法
-
[解決済み】Flutterのテキストウィジェットの下に黄色い線が?
-
[解決済み】Flutter: 未処理の例外です。バインディングが初期化される前にServicesBinding.defaultBinaryMessengerにアクセスされました。
-
[解決済み】flutterでパッケージ名を変更する方法は?
-
[解決済み] フラッター エキスパンドとフレキシブル