contoh penggunaan riverpod 2.0
part 'login.provider.g.dart';
@riverpod
class SignInNotifier extends _$SignInNotifier {
late SignInUsecase signInUsecase;
@override
void build() {
signInUsecase = sl<SignInUsecase>();
}
Future<DataState<Login>> signIn(AppParams params) async {
final dataState = await signInUsecase(
params: AppParams(
accessToken: params.accessToken,
username: params.username,
password: params.password,
),
);
if (dataState is DataSuccess) {
return DataSuccess(dataState.data!);
} else if (dataState is DataFailed) {
return DataFailed(dataState.error!);
} else {
throw Exception('Unknown Error');
}
}
}
@riverpod atau @Riverpod() merupakan anotasi untuk provider