Rendezvous-Tokyo

久しぶりに触った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;

意外と動く。

以上。