画面で、リスト表示用のウィジェットを読んでいる場合に、その部分にConsumer設定する手順
1.修正前
(修正前)TaskListView部分をTaskScreenPage画面で呼んでいる状況:
class TaskScreenPage extends StatelessWidget {
const TaskScreenPage({super.key});
@override
Widget build(BuildContext context) {
// ManageDbProcess インスタンス作成
final manageDbProcess = ManageDbProcess();
return Scaffold(
appBar: AppBar(
title: const Text('タスクリスト'),
),
body: TaskListView(manageDbProcess: manageDbProcess), // TaskListView を使用してタスクを表示
);
}
}
class TaskListView extends StatelessWidget {
final ManageDbProcess manageDbProcess;
const TaskListView({super.key, required this.manageDbProcess});
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: manageDbProcess.manageFetchAllTasks(),
builder: (context, snapshot) {
2.修正後
(修正後)画面側で処理をprovider登録/リスト側でConsumer設定:
class TaskScreenPage extends StatelessWidget {
const TaskScreenPage({super.key});
@override
Widget build(BuildContext context) {
// ManageDbProcess インスタンス作成
final manageDbProcess = ManageDbProcess();
return Scaffold(
appBar: AppBar(
title: const Text('タスクリスト'),
),
// ManageDbProcess をプロバイダとして提供
body: ChangeNotifierProvider(
create: (context) => manageDbProcess,
child: TaskListView(manageDbProcess: manageDbProcess), // TaskListView を使用してタスクを表示
);
}
}
class TaskListView extends StatelessWidget {
final ManageDbProcess manageDbProcess;
const TaskListView({super.key, required this.manageDbProcess});
@override
Widget build(BuildContext context) {
return Consumer<ManageDbProcess>(
builder: (context, manageDbProcess,child) {
return FutureBuilder(
future: manageDbProcess.manageFetchAllTasks(),
builder: (context, snapshot) {