[解決済み】FlutterでStateful Widgetにデータを渡す
2022-04-14 20:04:42
質問
ステートフルウィジェットを作成する際に、データを渡す推奨される方法は何なのか気になります。
私が見たことのあるスタイルは2つです。
class ServerInfo extends StatefulWidget {
Server _server;
ServerInfo(Server server) {
this._server = server;
}
@override
State<StatefulWidget> createState() => new _ServerInfoState(_server);
}
class _ServerInfoState extends State<ServerInfo> {
Server _server;
_ServerInfoState(Server server) {
this._server = server;
}
}
このメソッドは
ServerInfo
と
_ServerInfoState
というのは、ちょっともったいない気がします。
もう一つの方法は
widget._server
:
class ServerInfo extends StatefulWidget {
Server _server;
ServerInfo(Server server) {
this._server = server;
}
@override
State<StatefulWidget> createState() => new _ServerInfoState();
}
class _ServerInfoState extends State<ServerInfo> {
@override
Widget build(BuildContext context) {
widget._server = "10"; // Do something we the server value
return null;
}
}
に状態が保存されなくなったので、これは少し逆行しているように見えます。
_ServerInfoSate
でなく、ウィジェットの中にあります。
これに対するベストプラクティスはあるのでしょうか?
どのように解決するのですか?
にパラメータを渡さない。
State
は、コンストラクタを使用しています。
パラメータにアクセスするには
this.widget.myField
.
コンストラクタを編集するには多くの手作業が必要なだけでなく、何ももたらしません。のすべてのフィールドを重複させる理由はありません。
Widget
.
EDIT :
以下はその一例です。
class ServerIpText extends StatefulWidget {
final String serverIP;
const ServerIpText ({ Key? key, this.serverIP }): super(key: key);
@override
_ServerIpTextState createState() => _ServerIpTextState();
}
class _ServerIpTextState extends State<ServerIpText> {
@override
Widget build(BuildContext context) {
return Text(widget.serverIP);
}
}
class AnotherClass extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: ServerIpText(serverIP: "127.0.0.1")
);
}
}
関連
-
iOS アプリに Flutter を追加しようとすると、コマンド PhaseScriptExecution が 0 以外の終了コードで失敗します。
-
[解決済み] FlutterでButtonを無効にするには?
-
[解決済み】Flutter - オーバーフロー時にテキストを折り返し、省略記号の挿入やフェードを行う
-
[解決済み】FlutterでStatefulWidgetにデータを渡して、その状態のままアクセスする方法
-
[解決済み】Flutterで少し遅れてからコードを実行する方法は?
-
[解決済み] FlutterでAndroidの "BACK "ボタンを無効化または上書きする方法は?
-
[解決済み] ボタンの幅を親と同じにするには?
-
[解決済み] 依存関係がヌルセーフティをサポートしていないため、サウンドヌルセーフティで実行できない
-
[解決済み] Flutter 継承されたウィジェットを正しく使うには?
-
[解決済み] 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でgoogleとyoutubeの両方にログインする
-
[解決済み】Flutterで角丸画像を作成する方法
-
[解決済み】FlutterでStatefulWidgetにデータを渡して、その状態のままアクセスする方法
-
[解決済み】Flutterでウィジェットをプログラム的に表示・非表示にする方法
-
[解決済み】FlutterでStateful Widgetにデータを渡す
-
[解決済み] Flutterアプリケーションがデバッグで動作していることを確認する方法は?
-
[解決済み] Flutterでボタンの幅と高さを設定する方法は?
-
[解決済み] フラッターは2つのアイテムを左と右の両極端に配置します。
-
[解決済み] FlutterError: アセットをロードできない