Flutterのprovider + changeNotiferで状態管理をしています。  
状態は変化する値を指すので例を上げると以下のようなメソッドをviewModelに定義することが一般的です。

```

    class A extends ChangeNotifer {
      bool a = false;
      
      void changeA() {
        a = !a;
        notifyListeners();
      }
    }
    
    
```

しかし、アラート、ダイアログを出すようなメソッドや値を返すメソッドは変化する値を管理していないのでviewModelに記載するのは不自然だと思います。しかし、viewにそのまま記載するとアラートやダイアログは他のページでも使われるので共通化したいです。

```

    import 'package:flutter/material.dart';
    
    
    class A extends ChangeNotifer {
      bool a = false;
      // ダメだと思うメソッド１
      void viewAlert({
        required BuildContext context,
      }) {
        showDialog<String>(
          context: context,
          builder: (BuildContext context) => AlertDialog(
            title: Text('完了しました。'),
            actions: <Widget>[
              Builder(builder: (context) {
                return TextButton(
                  onPressed: () {
                    Navigator.popUntil(context, ModalRoute.withName('/a'));
                  },
                  child: const Text('OK'),
                );
              }),
            ],
          ),
        );
      }
    
      // ダメだと思うメソッド2
      int b(int a) {
        return 3 + a;
      }
    }
    
    
```

この２つの最適な定義場所について良い意見があればアドバイスよろしくお願いします。
CC BY-SA 4.0
2022-11-12T03:48:08.780
92175
2022-11-12T03:48:08.780
36424
question
flutter
値を返すメソッドやアラートやダイアログを表示するメソッドviewModelに記載しないようにしたい。