🐥

Do not use BuildContexts across async gaps. ← 謎過ぎたこいつやった消えた

2023/01/16に公開

謎にずっと悩んでいたlintsからの警告↓
パッと見ただけで分かった人は普通に尊敬します。
まぁ、タイトルがガッツリ警告内容なので、ネタバレしてるって感じかもしれませんが、、、笑

毎回、なんやねんって感じでlintsが言ってくる事。

Do not use BuildContexts across async gaps. (Documentation)
翻訳:BuildContextsを非同期ギャップをまたいで使用しないでください。(ドキュメント)

で、この指定されているドキュメントはこちら
https://dart-lang.github.io/linter/lints/use_build_context_synchronously.html

うん、全然意味わからん。なんこれ。

まぁ、でもざっくり理解するとしたら、非同期処理した後に、
今、ポジショニングしているBuildContextが破棄されている可能性もあるから
クラッシュの可能性があるぞって話なのかなと思うと何となく納得できない事もない。

でも、ビビるくらい分からん。

で、ずっ〜〜〜と悩んでいたけど、下記のコードで解決した

まぁ、今まではawaitで非同期処理にしたけど、then使った非同期処理を使った結果
ニョロニョロが消えた。何やってんこれ。とは思うけど、とりま消えてくれた。

何で消えたのかはさっぱり分かってないけど。
もし、上記の僕が推測している内容が確かなら、警告文は消えたけど、根本的な部分は解決していない気がしてる。

だって、thenもawaitも非同期処理って考えると同じだから。

たまたま見つけた参考文

https://halzoblog.com/error-bug-diary/20220724-2/

これ見ると、まぁ僕が上記で書いてる推測がほぼほぼ合ってる気もするが
こういうのって気をつけてたら問題ないはずやねんけど、なんで何やろうか・・・

知ってる人いたらコーヒー奢るから教えてくださいmm

Discussion