401 lines
15 KiB
Dart
401 lines
15 KiB
Dart
// ignore_for_file: unused_import, deprecated_member_use
|
|
|
|
import 'package:didvan/models/ai/ai_chat_args.dart';
|
|
import 'package:didvan/views/ai/ai_chat_page.dart';
|
|
import 'package:didvan/views/ai/ai_chat_state.dart';
|
|
import 'package:didvan/views/ai/bot_assistants_page.dart';
|
|
import 'package:didvan/views/ai/create_bot_assistants_page.dart';
|
|
import 'package:didvan/views/ai/create_bot_assistants_state.dart';
|
|
import 'package:didvan/views/ai/history_ai_chat_page.dart';
|
|
import 'package:didvan/views/ai/history_ai_chat_state.dart';
|
|
import 'package:didvan/views/ai/info_page.dart';
|
|
import 'package:didvan/views/authentication/authentication.dart';
|
|
import 'package:didvan/views/authentication/authentication_state.dart';
|
|
import 'package:didvan/views/comments/comments.dart';
|
|
import 'package:didvan/views/comments/comments_state.dart';
|
|
import 'package:didvan/views/customize_category/customize_category_state.dart';
|
|
import 'package:didvan/views/customize_category/favorites_step.dart';
|
|
import 'package:didvan/views/direct/direct.dart';
|
|
import 'package:didvan/views/direct/direct_state.dart';
|
|
import 'package:didvan/views/hashtag/hashtag.dart';
|
|
import 'package:didvan/views/hashtag/hashtag_state.dart';
|
|
import 'package:didvan/views/home/home.dart';
|
|
import 'package:didvan/views/home/infography/infography_screen.dart';
|
|
import 'package:didvan/views/home/infography/infography_screen_state.dart';
|
|
import 'package:didvan/views/home/main/main_page_state.dart';
|
|
import 'package:didvan/views/home/home_state.dart';
|
|
import 'package:didvan/views/home/new_statistic/new_statistic.dart';
|
|
import 'package:didvan/views/home/new_statistic/new_statistics_state.dart';
|
|
import 'package:didvan/views/home/new_statistic/statistics_details/stat_cats_general_screen.dart';
|
|
import 'package:didvan/views/home/new_statistic/statistics_details/stat_cats_general_state.dart';
|
|
import 'package:didvan/views/home/new_statistic/stock/new_stock_state.dart';
|
|
import 'package:didvan/views/home/new_statistic/stock/new_stock.dart';
|
|
import 'package:didvan/views/mentions/mentions.dart';
|
|
import 'package:didvan/views/mentions/mentions_state.dart';
|
|
import 'package:didvan/views/news/news.dart';
|
|
import 'package:didvan/views/news/news_details/news_details.dart';
|
|
import 'package:didvan/views/news/news_details/news_details_state.dart';
|
|
import 'package:didvan/views/news/news_state.dart';
|
|
import 'package:didvan/views/notification_time/notification_time_state.dart';
|
|
import 'package:didvan/views/podcasts/podcasts.dart';
|
|
import 'package:didvan/views/profile/profile.dart';
|
|
import 'package:didvan/views/radar/radar.dart';
|
|
import 'package:didvan/views/radar/radar_details/radar_details.dart';
|
|
import 'package:didvan/views/radar/radar_details/radar_details_state.dart';
|
|
import 'package:didvan/views/radar/radar_state.dart';
|
|
import 'package:didvan/views/home/bookmarks/bookmarks.dart';
|
|
import 'package:didvan/views/home/bookmarks/bookmark_state.dart';
|
|
import 'package:didvan/views/home/bookmarks/filtered_bookmark/filtered_bookmark.dart';
|
|
import 'package:didvan/views/home/bookmarks/filtered_bookmark/filtered_bookmarks_state.dart';
|
|
import 'package:didvan/views/profile/direct_list/direct_list.dart';
|
|
import 'package:didvan/views/profile/direct_list/direct_list_state.dart';
|
|
import 'package:didvan/views/profile/general_settings/settings.dart';
|
|
import 'package:didvan/views/profile/general_settings/settings_state.dart';
|
|
import 'package:didvan/views/profile/edit_profile/edit_profile.dart';
|
|
import 'package:didvan/views/home/statistic/statistic_details/statistic_details.dart';
|
|
import 'package:didvan/views/home/statistic/statistic_details/statistic_details_state.dart';
|
|
import 'package:didvan/views/home/statistic/statistic_state.dart';
|
|
import 'package:didvan/views/podcasts/studio_details/studio_details.mobile.dart'
|
|
if (dart.library.io) 'package:didvan/views/podcasts/studio_details/studio_details.mobile.dart'
|
|
if (dart.library.html) 'package:didvan/views/podcasts/studio_details/studio_details.web.dart';
|
|
import 'package:didvan/views/splash/splash.dart';
|
|
import 'package:didvan/routes/routes.dart';
|
|
import 'package:didvan/views/webview/web_view.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:home_widget/home_widget.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import '../views/customize_category/notification_status_step.dart';
|
|
import '../views/notification_time/notification_time.dart';
|
|
|
|
class RouteGenerator {
|
|
static Route<dynamic> generateRoute(RouteSettings settings) {
|
|
if (!kIsWeb) {
|
|
HomeWidget.saveWidgetData("cRoute", settings.name!);
|
|
}
|
|
switch (settings.name) {
|
|
case Routes.splash:
|
|
return _createRoute(
|
|
const Splash(),
|
|
);
|
|
case Routes.notificationTime:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<NotificationTimeState>(
|
|
create: (context) => NotificationTimeState(),
|
|
child: NotificationTime(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
)),
|
|
);
|
|
|
|
case Routes.favouritesStep:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<CustomizeCategoryState>(
|
|
create: (context) => CustomizeCategoryState(),
|
|
child: FavoritesStep(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
)),
|
|
);
|
|
|
|
// case Routes.newStatic:
|
|
// return _createRoute(ChangeNotifierProvider<NewStatisticState>(
|
|
// create: (context) => NewStatisticState(),
|
|
// child: const NewStatistic()));
|
|
|
|
case Routes.notificationStatusStep:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<CustomizeCategoryState>(
|
|
create: (context) => CustomizeCategoryState(),
|
|
child: NotificationStatusStep(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
)),
|
|
);
|
|
case Routes.authenticaion:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<AuthenticationState>(
|
|
create: (context) => AuthenticationState(),
|
|
child: Authentication(isResetPassword: settings.arguments as bool),
|
|
),
|
|
);
|
|
case Routes.home:
|
|
return _createRoute(
|
|
MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider<HomeState>(
|
|
create: (context) => HomeState(),
|
|
),
|
|
ChangeNotifierProvider<MainPageState>(
|
|
create: (context) => MainPageState(),
|
|
),
|
|
ChangeNotifierProvider<StatisticState>(
|
|
create: (context) => StatisticState(),
|
|
),
|
|
ChangeNotifierProvider<BookmarksState>(
|
|
create: (context) => BookmarksState(),
|
|
),
|
|
ChangeNotifierProvider<NewStatisticState>(
|
|
create: (context) => NewStatisticState())
|
|
],
|
|
child: Home(
|
|
showDialogs: settings.arguments as bool?,
|
|
),
|
|
),
|
|
);
|
|
case Routes.editProfile:
|
|
return _createRoute(
|
|
const EditProfile(),
|
|
);
|
|
case Routes.profile:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<GeneralSettingsState>(
|
|
create: (context) => GeneralSettingsState(),
|
|
child: const ProfilePage()),
|
|
);
|
|
case Routes.generalSettings:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<GeneralSettingsState>(
|
|
create: (context) => GeneralSettingsState(),
|
|
child: const GeneralSettings(),
|
|
),
|
|
);
|
|
case Routes.podcasts:
|
|
return _createRoute(
|
|
Podcasts(
|
|
viewPodcasts: true,
|
|
pageData: settings.arguments as Map<String, dynamic>?,
|
|
),
|
|
);
|
|
case Routes.videocasts:
|
|
return _createRoute(
|
|
Podcasts(
|
|
pageData: settings.arguments as Map<String, dynamic>?,
|
|
),
|
|
);
|
|
case Routes.radars:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<RadarState>(
|
|
create: (context) => RadarState(),
|
|
child: const Radar(),
|
|
),
|
|
);
|
|
case Routes.news:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<NewsState>(
|
|
create: (context) => NewsState(),
|
|
child: const News(),
|
|
),
|
|
);
|
|
case Routes.infography:
|
|
return _createRoute(ChangeNotifierProvider<InfographyScreenState>(
|
|
create: (context) => InfographyScreenState(),
|
|
child: InfographyScreen(
|
|
pageData: settings.arguments as Map<String, dynamic>?,
|
|
),
|
|
));
|
|
|
|
case Routes.radarDetails:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<RadarDetailsState>(
|
|
create: (context) => RadarDetailsState(),
|
|
child: RadarDetails(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
),
|
|
);
|
|
case Routes.statGeneral:
|
|
return _createRoute(MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider<StatGeneralScreenState>(
|
|
create: (context) => StatGeneralScreenState()),
|
|
ChangeNotifierProvider<NewStatisticState>(
|
|
create: (context) => NewStatisticState()),
|
|
],
|
|
child: StatGeneralScreen(
|
|
pageData: settings.arguments as Map<String, dynamic>),
|
|
));
|
|
|
|
case Routes.newsDetails:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<NewsDetailsState>(
|
|
create: (context) => NewsDetailsState(),
|
|
child: NewsDetails(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
),
|
|
);
|
|
case Routes.studioDetails:
|
|
return _createRoute(
|
|
StudioDetails(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
);
|
|
|
|
case Routes.statisticDetails:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<StatisticDetailsState>(
|
|
create: (context) => StatisticDetailsState(),
|
|
child: StatisticDetails(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
),
|
|
);
|
|
|
|
case Routes.stock:
|
|
return _createRoute(MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider<NewStockState>(
|
|
create: (context) => NewStockState(),
|
|
),
|
|
],
|
|
child: const NewStock(),
|
|
));
|
|
|
|
case Routes.directList:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<DirectListState>(
|
|
create: (context) => DirectListState(),
|
|
child: const DirectList(),
|
|
),
|
|
);
|
|
case Routes.direct:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<DirectState>(
|
|
create: (context) => DirectState(),
|
|
child: Direct(pageData: settings.arguments as Map<String, dynamic>),
|
|
),
|
|
);
|
|
case Routes.comments:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<CommentsState>(
|
|
create: (context) => CommentsState(),
|
|
child: Comments(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
),
|
|
);
|
|
case Routes.mentions:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<MentionsState>(
|
|
create: (context) => MentionsState(),
|
|
child: Mentions(
|
|
pageData: settings.arguments as Map<String, dynamic>,
|
|
),
|
|
),
|
|
);
|
|
case Routes.bookmarks:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<BookmarksState>(
|
|
create: (context) => BookmarksState(),
|
|
child: const Bookmarks(),
|
|
),
|
|
);
|
|
case Routes.hashtag:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<HashtagState>(
|
|
create: (context) => HashtagState(),
|
|
child:
|
|
Hashtag(pageData: settings.arguments as Map<String, dynamic>),
|
|
),
|
|
);
|
|
case Routes.filteredBookmarks:
|
|
return _createRoute(
|
|
ChangeNotifierProvider<FilteredBookmarksState>(
|
|
create: (context) => FilteredBookmarksState(
|
|
(settings.arguments as Map<String, dynamic>)['type'],
|
|
),
|
|
child: FilteredBookmarks(
|
|
onDeleted:
|
|
(settings.arguments as Map<String, dynamic>)['onDeleted']),
|
|
),
|
|
);
|
|
|
|
case Routes.aiChat:
|
|
return _createRoute(ChangeNotifierProvider<AiChatState>(
|
|
create: (context) => AiChatState(),
|
|
child: AiChatPage(
|
|
args: settings.arguments as AiChatArgs,
|
|
)));
|
|
case Routes.aiHistory:
|
|
return _createRoute(HistoryAiChatPage(
|
|
archived: settings.arguments as bool?,
|
|
));
|
|
|
|
case Routes.botAssistants:
|
|
return _createRoute(const BotAssistantsPage());
|
|
case Routes.createBotAssistants:
|
|
return _createRoute(ChangeNotifierProvider<CreateBotAssistantsState>(
|
|
create: (context) {
|
|
final CreateBotAssistantsState pr = CreateBotAssistantsState();
|
|
final id = settings.arguments as int?;
|
|
if (id != null) {
|
|
pr.getAnAssistant(id: id);
|
|
}
|
|
return pr;
|
|
},
|
|
child: CreateBotAssistantsPage(
|
|
id: settings.arguments as int?,
|
|
),
|
|
));
|
|
case Routes.info:
|
|
return _createRoute(const InfoPage());
|
|
|
|
case Routes.web:
|
|
return _createRoute(WebView(
|
|
src: settings.arguments as String,
|
|
));
|
|
default:
|
|
return _errorRoute(settings.name ?? '');
|
|
}
|
|
}
|
|
|
|
static Route<dynamic> _errorRoute(String name) {
|
|
return MaterialPageRoute(builder: (_) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('Error'),
|
|
),
|
|
body: Center(
|
|
child: Text('$name is not valid'),
|
|
),
|
|
);
|
|
});
|
|
}
|
|
|
|
static Route _createRoute(page) {
|
|
return MaterialPageRoute(
|
|
builder: (context) {
|
|
final shortestSide = MediaQuery.of(context).size.shortestSide;
|
|
final bool useMobileLayout = shortestSide < 600;
|
|
if (kIsWeb && !useMobileLayout) {
|
|
final deviceSize = MediaQuery.of(context).size;
|
|
return MediaQuery(
|
|
data: MediaQuery.of(context).copyWith(
|
|
size: Size(
|
|
deviceSize.height * 9 / 16,
|
|
deviceSize.height,
|
|
),
|
|
textScaler: const TextScaler.linear(1.0),
|
|
),
|
|
child: Container(
|
|
color: Theme.of(context).colorScheme.background,
|
|
alignment: Alignment.center,
|
|
child: AspectRatio(aspectRatio: 9 / 16, child: page),
|
|
),
|
|
);
|
|
}
|
|
return MediaQuery(
|
|
data: MediaQuery.of(context)
|
|
.copyWith(textScaler: const TextScaler.linear(1.0)),
|
|
child: Container(
|
|
color: Theme.of(context).colorScheme.surface,
|
|
child: SafeArea(
|
|
child: page,
|
|
top: false,
|
|
),
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|