●現状、やりたいこと
viewファイルでリストの並べ替えをしている。
より見やすいコードにするために
「viewは画面構成」
「providerはListの更新等の動作」
明確に役割分担をしたい。
●理想の動き
providerにListの並べ替える関数を作成し、
providerにある関数をviewに呼び出したい。
今回はこちらの式を使った
関数の定義
基本的な関数の定義は次のようになります。
戻り値の型 関数名 (仮引数の型 仮引数名)
{ return 戻り値; }
★before
todo_list.dart【view】
// isCompletedがtrueになっているTodoListのみのリストを再描画する
final completedTodoList = todoList.where((todo) => todo.isCompleted).toList();
list_provider.dart【provider】
未記入
★after
todo_list.dart【view】
// listProviderをnotifire(更新) completedTodoListの返り値で書き換え(Listを並び替え)
final completedTodoList = ref.watch(listProvider.notifier).completedTodoList();
list_provider.dart【provider】
//並べ替えたいListの型 completedToDoListという関数を作成 並べ替えたリストの結果(返り値)を返す(return)
List completedTodoList() {
return state.where((todo) => todo.isCompleted).toList();
}
結論、どちらのコードでも同じ動きになるのだが、保守性や見易さを考えるとviewとproviderそれぞれ役割分担をすると良い。