import'package:flutter/material.dart';import'package:flutter_counter/providers/counter.dart';import'package:flutter_riverpod/flutter_riverpod.dart';voidmain(){runApp(constProviderScope(child:MyApp()));}classMyAppextendsStatelessWidget{constMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(title:'Flutter Demo',theme:ThemeData(colorScheme:ColorScheme.fromSeed(seedColor:Colors.deepPurple),useMaterial3:true,),home:constMyHomePage(title:'Flutter Demo Home Page'),);}}classMyHomePageextendsConsumerWidget{constMyHomePage({super.key,requiredthis.title});finalStringtitle;@overrideWidgetbuild(BuildContextcontext,WidgetRefref){// WidgetRef refで状態にアクセスできるreturnScaffold(appBar:AppBar(backgroundColor:Theme.of(context).colorScheme.inversePrimary,title:Text(title),),body:Center(child:Column(mainAxisAlignment:MainAxisAlignment.center,children:<Widget>[constText('You have pushed the button this many times:',),Text('${ref.watch(counterProvider)}',// ref.watch(xxxProvider)で変更を検知しつつ値を読み込むことができるstyle:Theme.of(context).textTheme.headlineMedium,),],),),floatingActionButton:FloatingActionButton(onPressed:()=>ref.read(counterProvider.notifier).increment(),// ref.read(xxxProvider.notifier).methodName()でメソッドを呼ぶことができるtooltip:'Increment',child:constIcon(Icons.add),),);}}
実行前にdart run build_runner watch --delete-conflicting-outputsを実行してlib\counter.g.dartを生成すること。