Метод RegisterUser не определен для типа AsyncValue.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Метод RegisterUser не определен для типа AsyncValue.

Сообщение Anonymous »

Это мой app_router.dart.
Я устанавливаю логику перенаправления, но возникает ошибка AsyncValue.
Логика перенаправления — методы в моем репо — зарегистрируйте пользователя и зарегистрируйте бизнес - если это правда или ложь, в зависимости от этого он перейдет на соответствующую страницу, также я хочу добавить общие предпочтения для постоянства.
import 'package:fundsaudit/src/features/Myshop/presentation/myproducts_screen.dart';
import 'package:fundsaudit/src/features/auth/data/firebaseauth_repository.dart';
import 'package:fundsaudit/src/features/auth/presentation/sign_in_screen.dart';
import 'package:fundsaudit/src/features/home/presentation/home_screen.dart';
import 'package:fundsaudit/src/features/registration/data/registration_repository.dart';
import 'package:fundsaudit/src/features/registration/presentation/account_setup_screen.dart';
import 'package:fundsaudit/src/features/registration/presentation/business_setup_screen.dart';
import 'package:fundsaudit/src/routing/go_refresh_stream.dart';
import 'package:go_router/go_router.dart';
import 'package:fundsaudit/bottomNav.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:fundsaudit/src/features/Myshop/presentation/myproducts_screen.dart';
import 'package:shared_preferences/shared_preferences.dart';
part "app_router.g.dart";

enum AppRoute {
signIn,
registration,
personalSetup,
businessSetup,
home,
phoneNo,
otp,
}

@riverpod
GoRouter goRouter(GoRouterRef ref) {
final authRepository = ref.watch(firebaseAuthRepositoryProvider);
final registrationRepo = ref.watch(registrationRepoProvider);

return GoRouter(
initialLocation: "/signIn",
debugLogDiagnostics: true,
refreshListenable: GoRouterRefreshStream(authRepository.authStateChanges()),
redirect: (context, state) async {
final currentUser = authRepository.currentUser;
if (currentUser == null) {
return '/signIn';
}

final isUserRegistered = await registrationRepo.registerUser(currentUser.uid);
final isBusinessRegistered = await registrationRepo.registerBusiness(currentUser.uid);

if (!isUserRegistered) {
return '/setup/personal';
} else if (!isBusinessRegistered) {
return '/setup/business';
} else {
return '/home';
}
},
routes: [
GoRoute(
path: '/home',
name: AppRoute.home.name,
pageBuilder: (context, state) => const NoTransitionPage(child: HomeScreen()),
),
GoRoute(
path: '/signIn',
name: AppRoute.signIn.name,
pageBuilder: (context, state) => const NoTransitionPage(child: PhoneNumber()),
routes: [
GoRoute(
path: 'otp/:phoneNo',
name: AppRoute.otp.name,
pageBuilder: (context, state) {
final phoneNo = state.pathParameters['phoneNo']!;
return NoTransitionPage(child: OTPPage(phoneNumber: phoneNo));
},
),
],
),
GoRoute(
path: '/setup/personal',
name: AppRoute.personalSetup.name,
pageBuilder: (context, state) => NoTransitionPage(child: AccountSetupScreen()),
),
GoRoute(
path: '/setup/business',
name: AppRoute.businessSetup.name,
pageBuilder: (context, state) => const NoTransitionPage(child: BusinessSetupScreen()),
),
],
);
}

class RegistrationRepo {
RegistrationRepo(
this._api,
);
final Api? _api;

Future registerUser(data) async {
if (_api == null) {
debugPrint("API instance not available");
return false; // API not available, registration cannot proceed
}
try {
await _api.post('/auth/registerUser', data);
debugPrint("User registration successful, $data");
return true; // Registration successful
} catch (e) {
debugPrint("Error registering user, $e");
return false; // Registration failed
}
}

Future registerBusiness(data) async {
if (_api == null) {
debugPrint("API instance not available");
return false;
}
try {
await _api.post('/auth/registerBusiness', data);
debugPrint("Business registration successful, $data");
return true;
} catch (e) {
debugPrint("Error registering business, $e");
return false;
}
}

@riverpod
Future registrationRepo(RegistrationRepoRef ref) async {
var api = await ref.watch(apiProvider.future);
return RegistrationRepo(api);
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... asyncvalue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»