Flutter shared_prefsプラグインの非同期性を考えれば、アプリ起動時に正しいテーマ設定がすぐに表示されるようにするにはどうすればよいですか?私。 shared_prefsの読み込みが完了したら、デフォルトテーマのフラッシュはなく、正しいテーマを適用します。Flutterアプリで即座にアプリテーマを表示
2
A
答えて
4
をごbuild
方法はFuture
を待っている必要とするとき、それはFutureBuilder
を抜け出すための良い時間です。
void main() {
runApp(new FutureBuilder(
future: SharedPreferences.getInstance(),
builder: (_, snapshot) {
return snapshot.hasData ?
new MyApp(preferences: snapshot.data) :
new LoadingScreen();
},
));
}
このパターンでアプリケーションを構築するためのいくつかのヒント:
SharedPreferences.getInstance()
はかなり速いです。カラフルなコンテンツのフラッシュではなく、空のContainer
を黒の読み込み画面として表示すると、アプリの見栄えが向上する場合があります。ただし、同時に他のものを読み込んでいる場合は、ロゴを表示する方が理にかなっています。複数の未来を待つ必要がある場合は、 Future.waitまたは複数の
FutureBuilder
を一緒にネストすることができます。
2
1つの方法は、ローディング画面でメインアプリの表示を遅らせることです。私が見てきたパターンは次のとおりです。
main() async {
runApp(new LoadingScreen());
runApp(new App(await asyncStuff()));
}
あなたはできるだけ頻繁にあなたが好きなようにrunAppを呼び出すことができます。https://docs.flutter.io/flutter/widgets/runApp.html
0
また、アプリケーションの設定が完了した後、ルートウィジェットを更新するsetState
でStatefulWidget
を使用することができます。併せて
@override
Widget build(BuildContext context) {
_return mainWidget;
}
:あなたは(短い中)のようなものを使用することができます
あなたは非同期コールバックにいるとき
mainWidget = loadingWidget();
someMethodThatDoesAppConfig().then((Widget configuredWidget) {
setState(() {
_mainWidget = configuredWidget;
});
});
関連する問題
- 1. アプリの起動時に即座にステータスバーとナビゲーションバーを非表示にする
- 2. 「UILoaderでイメージを即座に表示する方法」
- 3. 即座にRコンソールにRcout出力を表示させる
- 4. JavaFXフォームを非表示にして即座に再度表示する
- 5. Rails 3:画像の表示を即座に切り取る
- 6. 即座に3秒間アクティビティインジケータを表示する2.0テーブルビュー
- 7. FxCopアナライザは即座に警告を表示しません
- 8. ViewPagerで即座にジャンプ
- 9. アニメーションが即座に
- 10. WebView - getElementByIdでdivを非表示にしても即座に動作しない
- 11. C++ condition_variable即座
- 12. ボタンを即座に開く
- 13. アクションアイテムを即座にプレビュー3
- 14. Androidスタジオは即座にアプリを終了します
- 15. JavaFxでTableViewの変更を即座に表示する方法は?
- 16. FlutterでSnackBarを表示する方法
- 17. アプリの起動と即座にクローズ - CustomSwipeAdapter - Androidのメーカー
- 18. コメントはどのようにFacebookに即座に表示されますか?
- 19. は即座Javascriptが即座にこのコードを実行している
- 20. は、即時アプリがGoogle検索で表示するために必要です。
- 21. iOSアプリで通知を表示するフォアグラウンドでアプリを実行中/即時にアクティブにする3
- 22. 写真を撮って即座にローカルにアプリに保存する
- 23. CGImageCreateが即座にエラーを返す
- 24. Map.Centerを即座に変更する
- 25. php配列キーを即座に作成
- 26. 即座に移動したコライダーをレイキャスティング
- 27. 即座にメッセージをスクロールする方法
- 28. C#テキストボックス名を即座に作成
- 29. 即座にプログラムをリロードする
- 30. 即座にC変数にアクセス
、あなたはSETSTATEを呼び出す前に(マウント)かどうかを確認する必要がありあなたのウィジェットが既に廃棄されていないことを確認してください。さもなければ、Flutterがアサートします。 FutureBuilderは自動的にこれを行います。この特定のケースでは、StatefulWidgetがアプリケーションのルートの近くにあり、アンマウントされる可能性は低いので、おそらく問題ありませんが、構成可能なウィジェットを構築するときは良い習慣です。 –