74320


以下のようなコードでホーム画面から変数を引き継いでるのですが、

[code]

    class _DetailPageState extends State<DetailPage> {
      String _key;
      var _detail;
      @override
      Widget build(BuildContext context) {
        final ScreenArguments _args = ModalRoute.of(context).settings.arguments;
        Map<String, dynamic> _items = _args.items;
        TextEditingController _textFieldController =
            TextEditingController(text: _key);
         _key = _args.key;
        _detail = _items[_key];
    
[/code]

setState()を呼んだ時上記コードが走って変更した`_key`,`_detail`が上書きされてしまいます。  
クラス直下の変数なら大丈夫なようですが、この例では前の画面から`ModalRoute.of(context).settings.arguments`で変数を取得しており、使用するのに`context`変数が必要なようなのでそれをクラス直下に移動することができません。どうすれば変更を反映させられるでしょう？


CC BY-SA 4.0
2021-02-28T08:46:14.173
74318
2021-02-28T09:26:37.790
816
question
flutter dart
setState()で前の画面から引き継いだ変数が変更できない


以下のようにnullの時だけ代入するようにしたらできました。

[code]

        if (_key == null) {
          _key = _args.key;
          _detail = _items[_key];
        }
    
[/code]


CC BY-SA 4.0
2021-02-28T09:26:37.790
74320
2021-02-28T09:26:37.790
816
74318
answer