久しぶりに触ったFlutterのバージョンを1.2から3.3にアップグレード
Flutter久しぶりすぎて...。
commit履歴みると最後に触ったのは2021年の4月だから1年半以上ぶり。
とりあえず実行してみたら動いたけど、コンソールにflutter upgrade
できるぞって出てたので実行。
前回のバージョン1.20.0から今回3.3.0とかまで上がった。
pubspec.yaml
とりあえずよくわからんけど、エラー解消してったらこうなった。
dependency_overrides: # ⇦追加
platform: ^3.1.0 # ⇦追加
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
provider: ^5.0.0 # ⇦追加
flutter_riverpod: ^2.1.1 # ^0.12.4から更新
hooks_riverpod: ^2.1.1 # ^0.12.4から更新
...省略
useProvider()が使えなくなっている
アップグレード後の変更点。
- HookWidget -> HookConsumerWidget
- buildの引数にWidgetRefを追加
- useProvider()ではなくref.watch()を使うように修正
(コメントアウト部分が旧コード)
//class HogePage extends HookWidget {
class HogePage extends HookConsumerWidget {
const HogePage({Key key}) : super(key: key);
//Widget build(BuildContext context) {
Widget build(BuildContext context, WidgetRef ref) {
//final _hoge = useProvider(hoge);
final hoge = ref.watch(hogeProvider);
..省略
//final hoge = Provider((ref) {
// return ref.watch(hogeProvider.state);
//});
final resultProvider = StateNotifierProvider((ref) {
return Hoge();
});
class Hoge extends StateNotifier<String> {
MyResult() : super('test');
void setState(String state) {
this.state = state;
}
}
context.read(resultProvider).stateが使えなくなっている。
これで値取ってたのに
context.read(hogeProvider).state
こうなった
ref.read(hogeProvider.notifier).state;
意外と動く。
以上。