Это мой 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
Метод RegisterUser не определен для типа AsyncValue. ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1715584883
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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78470494/the-method-registeruser-isnt-defined-for-the-type-asyncvalue[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия