突然エディターに取り消し線が。
以前はなかったのですが、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
解決!
コメント