実現したいこと
StateNotifierを継承したクラスのメンバメソッドから,他のStateNotifierのインスタンスを取得して,メソッドを呼び出したりしたいです.何かいい方法はありませんか?あるいはこのような実装自体が良くないものなのか教えて頂きたいです.
前提
Flutterで字幕を表示できるプレーヤーアプリを作っています.
Riverpodを活用して状態管理をしていて,再生状態は「AudioPlayerNotifier」,字幕は「SubtitleNotifier」というNotifierを作成し,管理しています.AudioPlayerNotifierのplay()メソッドが呼ばれるタイミングでSubtitleNotifierのfetchSubtitle()メソッドを呼び出したいです.
該当のソースコード
dart
1class AudioPlayerNotifier extends StateNotifier<PlayingState> {2 final AudioPlayer _player = AudioPlayer();3 // ...中略4 Future<void> play(String audioPath) async{5 // ~中略~6 await _player.play();7 8 9 // ここでSubtitleProviderのインスタンスを取得して,fetchSubtitleメソッドを実行したい.10 11 12 }13}
dart
1class SubtitleNotifier extends StateNotifier<Map<String, SubtitlesData>> {2 // ...中略3 Future<void> fetchSubtitle(String path) async{4 // オーディオのpathから字幕を取得する.5 }6}
試したこと
ref.watchでwidget側からSubtitleNotifierのメソッドを呼び出すことも検討しましたが,あまり設計として良くないのかな,と思い断念しました.
補足情報(FW/ツールのバージョンなど)
環境は以下の通りです.
・Flutter 3.10.5
・Dart 3.0.5
・flutter_riverpod 2.3.6
・DevTools 2.23.1
・VSCode

0 コメント