【Flutter】riverpod3.0へのマイグレ警告発生?

Devlog
Devlog

突然エディターに取り消し線が。

以前はなかったのですが、3.0では廃止(deprecate)されるので置き換えろとのこと。Riverpod2.0の記事を参照して書いていたのが原因でしょうか。

課題

Dart
import 'package:firebase_auth/firebase_auth.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'auth_provider.g.dart';

@riverpod
// サインインしているかどうかを格納
Stream<User?> userChanges(UserChangesRef ref) {
  return FirebaseAuth.instance.authStateChanges();
}

@riverpod
// データが入っている時だけユーザーが入る
User? user(UserRef ref) {
  final userChanges = ref.watch(userChangesProvider);
  return userChanges.when(
    loading: () => null,
    error: (_, __) => null,
    data: (d) => d,
  );
}

@riverpod
// サインインしているかをboolで表す
bool signedIn(SignedInRef ref) {
  final user = ref.watch(userProvider);
  return user != null;
}
'SignedInRef' is deprecated and shouldn't be used. Will be removed in 3.0. Use Ref instead.
Try replacing the use of the deprecated member with the replacement.dartdeprecated_member_use_from_same_package
(deprecated) typedef SignedInRef = AutoDisposeProviderRef<bool>

解決方法

1. 取り消し線部分を消す

取り消し線部分を消せばエディター上は解決するが動かない

Dart
// これは動かない

@riverpod
Stream<User?> userChanges(ref) {
  return FirebaseAuth.instance.authStateChanges();
}

2. (Ref ref)にしてみる

(Ref ref)でgeneratorで再生成してもエラーに・・・と思いきや、import追加が必要な模様。

Dart
import 'package:flutter_riverpod/flutter_riverpod.dart'; // 元の記述だとこれが不要だった

@riverpod
Stream<User?> userChanges(Ref ref) {
  return FirebaseAuth.instance.authStateChanges();
}
flutter pub run build_runner build --delete-conflicting-outputs

 

解決!

 

コメント

タイトルとURLをコピーしました