結論から伝えるとonChangeの中でFuture.delayedを使うと時限爆弾の如くいきなりアプリが落ちると言った内容です。
流れ
1.textFieldが二つ以上並んだ共通部品を作成
2.引数としてonChangeとtextEditingControllerを準備
3.引数でFuture.delayedの入ったonChangeを渡すとログも出ずにlost connectionとだけ表示されアプリがクラッシュする
該当のonChangeメソッドはこんな感じ
onChangeFunc(String text) {
Future.delayed(Duration.zero,(){
setState(() {
//処理
});
});
}
これを渡した時に謎に時限爆弾の如く1〜5分以内に落ちる
textFieldが一つの場合は落ちることなく処理できていたので何が問題なのかわからず1ヶ月弱、アプリが落ちるたびにデバックを再開するという地獄のような日々を送ってました
どこかの記事でonChangeを外から呼び出す時はFuture.delayedが必要みたいなことを書いてあった気がしてまさかそれがクラッシュの原因の一つになっているなんて思いもしませんでした。
こんな問題にぶつかる人は少ないと思いますが、こういったアプリを作るみたいな人は僕みたいな地獄のような日々を送ってほしくないなと思ったので忘備録としてここの残します。
クラッシュしないってだけでほんと幸せだなぁとつくづく思った日々でした