Flutter: アプリケーションを強制的に再起動させる方法(本番モード)?
2023-08-30 17:23:18
質問
で プロダクションモード で、アプリケーションの完全な再起動を強制する方法はありますか (私は ではない 開発時のホットリロードについて話しているのではありません!)。
実用的な使用例です。
-
初期化処理で、アプリケーションはネットワーク接続がないことを検出します。 ネットワーク接続の欠如により、正しい起動が妨げられた可能性があります (例: JSON ファイルなどの外部リソースの読み込み...)。
-
最初のハンドシェイク中に、いくつかの重要なリソースの新しいバージョンをダウンロードする必要があります (更新の一種)。
両方の使用例において、私は、ApplicationStateレベルで複雑なロジックを構築するのではなく、アプリケーションが完全な再起動で進行することを望みます。
ヒントをいただき、ありがとうございます。
どのように解決するのですか?
アプリ全体をステートフルウィジェットにラップすることができます。そして、アプリを再起動するときは、そのステートフルウィジェットを、別の子ウィジェットとして再構築します。
Key
.
これでは、アプリの状態が全て失われてしまいます。
import 'package:flutter/material.dart';
void main() {
runApp(
RestartWidget(
child: MaterialApp(),
),
);
}
class RestartWidget extends StatefulWidget {
RestartWidget({this.child});
final Widget child;
static void restartApp(BuildContext context) {
context.findAncestorStateOfType<_RestartWidgetState>().restartApp();
}
@override
_RestartWidgetState createState() => _RestartWidgetState();
}
class _RestartWidgetState extends State<RestartWidget> {
Key key = UniqueKey();
void restartApp() {
setState(() {
key = UniqueKey();
});
}
@override
Widget build(BuildContext context) {
return KeyedSubtree(
key: key,
child: widget.child,
);
}
}
この例では、どこからでもアプリをリセットできるように
RestartWidget.restartApp(context)
.
関連
-
[解決済み] Flutterのデバッグバナーを削除するにはどうしたらいいですか?
-
[解決済み] Flutterで16進数の色文字列を使用するにはどうすればよいですか?
-
[解決済み] Flutterでウィジェットにボーダーを追加するには?
-
[解決済み】Flutterでアプリケーションランチャーのアイコンを変更するには?
-
[解決済み】flutterでパッケージ名を変更する方法は?
-
[解決済み】Flutterで数値入力フィールドを作成する方法は?
-
[解決済み] ポップアップ時にFlutterナビゲータの状態を再読み込みするように強制する
-
[解決済み] FlutterのコードからWebブラウザ(URL)を開くには?
-
[解決済み] Flutter StreamBuilderとFutureBuilderの比較
-
[解決済み] Flutter Layout Row / Column - 幅を共有し、高さを拡張する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CircularProgressIndicatorにサイズを設定するには?
-
[解決済み] Flutter: タッチスクリーンでのスクロールを無効にするListView
-
[解決済み] FlutterでAndroidのStatusBarを非表示にする方法
-
[解決済み] 丸みを帯びたボーダーを持つボタンを作成する [重複]。
-
[解決済み] Flutterのアウトラインがandroid studioで "Nothing to show "と表示される。
-
[解決済み] TextFormFieldとTextFieldの違いは何ですか?
-
[解決済み] flutterのtextfieldでカーソルの位置を値の最後に設定するには?
-
[解決済み] Row FlutterでElement間のスペースを設定する
-
[解決済み] DartのList.forEach()でAsync/awaitする方法
-
[解決済み] Iosのステータスバーの文字色を変更する方法