added legacy and legacy_dashboard_shell modules

This commit is contained in:
2026-01-27 12:45:25 +01:00
parent 60a49060a1
commit 12edcd0940
68 changed files with 2496 additions and 46 deletions

5
.idea/modules.xml generated
View File

@@ -7,9 +7,12 @@
<module fileurl="file://$PROJECT_DIR$/packages/design_system/melos_design_system.iml" filepath="$PROJECT_DIR$/packages/design_system/melos_design_system.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/fonts/melos_fonts.iml" filepath="$PROJECT_DIR$/packages/fonts/melos_fonts.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/home/melos_home.iml" filepath="$PROJECT_DIR$/modules/home/melos_home.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/hub/melos_hub.iml" filepath="$PROJECT_DIR$/modules/hub/melos_hub.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/legacy/modules/hub/melos_hub.iml" filepath="$PROJECT_DIR$/modules/legacy/modules/hub/melos_hub.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/legacy/melos_legacy.iml" filepath="$PROJECT_DIR$/modules/legacy/melos_legacy.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/legacy/modules/legacy_dashboard_shell/melos_legacy_dashboard_shell.iml" filepath="$PROJECT_DIR$/modules/legacy/modules/legacy_dashboard_shell/melos_legacy_dashboard_shell.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/navigation/melos_navigation.iml" filepath="$PROJECT_DIR$/packages/navigation/melos_navigation.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/notifications/melos_notifications.iml" filepath="$PROJECT_DIR$/modules/notifications/melos_notifications.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/payments_dashboard_shell/melos_payments_dashboard_shell.iml" filepath="$PROJECT_DIR$/modules/payments_dashboard_shell/melos_payments_dashboard_shell.iml" />
<module fileurl="file://$PROJECT_DIR$/modules/profile/melos_profile.iml" filepath="$PROJECT_DIR$/modules/profile/melos_profile.iml" />
<module fileurl="file://$PROJECT_DIR$/apps/mobile_app/melos_sf_app_platform.iml" filepath="$PROJECT_DIR$/apps/mobile_app/melos_sf_app_platform.iml" />
<module fileurl="file://$PROJECT_DIR$/packages/sf_infrastructure/melos_sf_infrastructure.iml" filepath="$PROJECT_DIR$/packages/sf_infrastructure/melos_sf_infrastructure.iml" />

View File

@@ -1,4 +1,5 @@
import 'package:auth/auth.dart';
import 'package:legacy_dashboard_shell/legacy_dashboard_builder.dart';
import 'package:dashboard_shell/dashboard_builder.dart';
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
@@ -17,7 +18,7 @@ late final GoRouter appRouter;
void configureAppRouter() {
appRouter = GoRouter(
navigatorKey: rootNavigatorKey,
initialLocation: AppRoutes.splash,
initialLocation: AppRoutes.dashboardHub,
debugLogDiagnostics: true,
routes: [
GoRoute(
@@ -25,11 +26,23 @@ void configureAppRouter() {
name: 'splash',
pageBuilder: SplashBuilder().buildPage,
),
GoRoute(
path: AppRoutes.hub,
name: 'hub',
pageBuilder: HubBuilder().buildPage,
StatefulShellRoute.indexedStack(
builder: (context, state, navShell) {
return LegacyDashboardBuilder().build(context, navShell);
},
branches: [
StatefulShellBranch(
routes: [
GoRoute(
path: AppRoutes.dashboardHub,
name: 'hub',
pageBuilder: const HubBuilder().buildPage,
),
],
),
],
),
GoRoute(
path: AppRoutes.login,
name: 'login',

View File

@@ -42,13 +42,15 @@ dependencies:
home:
path: ../../modules/home
hub:
path: ../../modules/hub
path: ../../modules/legacy/modules/hub
profile:
path: ../../modules/profile
notifications:
path: ../../modules/notifications
dashboard_shell:
path: ../../modules/dashboard_shell
legacy_dashboard_shell:
path: ../../modules/legacy/modules/legacy_dashboard_shell
splash:
path: ../../modules/splash
#packages dependencies go here

View File

@@ -13,6 +13,15 @@
<excludeFolder url="file://$MODULE_DIR$/modules/hub/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/modules/hub/.pub" />
<excludeFolder url="file://$MODULE_DIR$/modules/hub/build" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/dashboard_shell/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/dashboard_shell/.pub" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/dashboard_shell/build" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/hub/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/hub/.pub" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/modules/hub/build" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/.pub" />
<excludeFolder url="file://$MODULE_DIR$/modules/legacy/build" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />

View File

@@ -32,7 +32,7 @@ class OnboardingScreen extends ConsumerWidget {
void goToNext() {
if (isLast) {
navigationContract.goTo(AppRoutes.hub);
navigationContract.goTo(AppRoutes.linkPhone);
} else {
pageController.nextPage(
duration: const Duration(milliseconds: 400),
@@ -111,7 +111,7 @@ class OnboardingScreen extends ConsumerWidget {
? const SizedBox.shrink()
: TextButton(
onPressed: () =>
navigationContract.goTo(AppRoutes.hub),
navigationContract.goTo(AppRoutes.linkPhone),
child: Text(
context.translate(I18n.skip),
style: AppFonts.stolzlStyle(

View File

@@ -1,28 +0,0 @@
# melos_managed_dependency_overrides: home
# melos_managed_dependency_overrides: home
# melos_managed_dependency_overrides: dashboard_shell,design_system,home,notifications,profile,sf_shared,navigation,utils,sf_localizations,fonts,sf_infrastructure
dependency_overrides:
dashboard_shell:
path: ../dashboard_shell
design_system:
path: ../../packages/design_system
fonts:
path: ../../packages/fonts
home:
path: ..\\home
hub:
path: ../hub
navigation:
path: ../../packages/navigation
notifications:
path: ../notifications
profile:
path: ../profile
sf_infrastructure:
path: ../../packages/sf_infrastructure
sf_localizations:
path: ../../packages/sf_localizations
sf_shared:
path: ../../packages/sf_shared
utils:
path: ../../packages/utils

48
modules/legacy/.gitignore vendored Normal file
View File

@@ -0,0 +1,48 @@
.DS_Store
.dart_tool/
.pub/
.idea/
.vagrant/
.sconsign.dblite
.svn/
migrate_working_dir/
*.swp
profile
DerivedData/
.generated/
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
!default.pbxuser
!default.mode1v3
!default.mode2v3
!default.perspectivev3
xcuserdata
*.moved-aside
*.pyc
*sync/
Icon?
.tags*
build/
.android/
.ios/
.flutter-plugins-dependencies
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json

10
modules/legacy/.metadata Normal file
View File

@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "9f455d2486bcb28cad87b062475f42edc959f636"
channel: "stable"
project_type: module

11
modules/legacy/README.md Normal file
View File

@@ -0,0 +1,11 @@
# legacy
A new Flutter project.
## Getting Started
For help getting started with Flutter development, view the online
[documentation](https://flutter.dev/).
For instructions integrating Flutter modules to your existing applications,
see the [add-to-app documentation](https://flutter.dev/to/add-to-app).

View File

@@ -0,0 +1,4 @@
include: package:flutter_lints/flutter.yaml
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

14
modules/legacy/legacy.iml Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/.pub" />
<excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component>
</module>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/.idea" />
<excludeFolder url="file://$MODULE_DIR$/.pub" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/android/.gradle" />
<excludeFolder url="file://$MODULE_DIR$/android/.idea" />
<excludeFolder url="file://$MODULE_DIR$/ios/Flutter" />
<excludeFolder url="file://$MODULE_DIR$/ios/Pods" />
<excludeFolder url="file://$MODULE_DIR$/ios/.symlinks" />
<excludeFolder url="file://$MODULE_DIR$/macos/Flutter" />
<excludeFolder url="file://$MODULE_DIR$/macos/Pods" />
<excludeFolder url="file://$MODULE_DIR$/macos/.symlinks" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" />
<orderEntry type="library" name="Dart Packages" level="project" />
</component>
</module>

View File

@@ -0,0 +1 @@
// TODO Implement this library.

45
modules/legacy/modules/hub/.gitignore vendored Normal file
View File

@@ -0,0 +1,45 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/
/coverage/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

View File

@@ -0,0 +1,45 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "9f455d2486bcb28cad87b062475f42edc959f636"
channel: "stable"
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: android
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: ios
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: linux
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: macos
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: web
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
- platform: windows
create_revision: 9f455d2486bcb28cad87b062475f42edc959f636
base_revision: 9f455d2486bcb28cad87b062475f42edc959f636
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@@ -0,0 +1,16 @@
# home
A new Flutter project.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
For help getting started with Flutter development, view the
[online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

View File

@@ -0,0 +1,28 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at https://dart.dev/lints.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View File

@@ -0,0 +1 @@
export 'src/features/hub/hub_builder.dart';

View File

@@ -52,17 +52,17 @@ class HubScreen extends ConsumerWidget {
children: [
AppSectionButton(
onPressed: (){},
icon: Icons.support_agent_outlined,
icon: SFIcons.customerService,
text: I18n.customerService),
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 7)),
AppSectionButton(
onPressed: (){navigationContract.pushTo(AppRoutes.dashboardHome);},
icon: Icons.payments_outlined,
icon: SFIcons.payments,
text: I18n.sfPay),
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 7)),
AppSectionButton(
onPressed: (){},
icon: Icons.menu_open_outlined,
icon: SFIcons.functions,
text: I18n.functions),
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 7)),
AppSectionButton(

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,114 @@
name: hub
description: "A new Flutter project."
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
environment:
sdk: ^3.9.2
flutter: ">=1.17.0"
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
flutter:
sdk: flutter
#modules dependencies go here
dashboard_shell:
path: ../../modules/dashboard_shell
#packages dependencies go here
design_system:
path: ../../../../packages/design_system
navigation:
path: ../../../../packages/navigation
sf_localizations:
path: ../../../../packages/sf_localizations
sf_infrastructure:
path: ../../../../packages/sf_infrastructure
utils:
path: ../../../../packages/utils
fonts:
path: ../../../../packages/fonts
#dependencies go here
flutter_svg: ^2.2.1
get_it: ^9.0.5
go_router: ^17.0.0
flutter_riverpod: ^3.0.3
freezed_annotation: ^3.1.0
freezed: ^3.2.3
dio: ^5.9.0
json_annotation: ^4.9.0
json_serializable: ^6.11.2
flutter_map: ^8.2.2
latlong2: ^0.9.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
riverpod_generator: ^3.0.3
build_runner: ^2.7.1
riverpod_lint: ^3.0.3
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter packages.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/to/asset-from-package
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/to/font-from-package

View File

@@ -0,0 +1,26 @@
# melos_managed_dependency_overrides: design_system,fonts,navigation,sf_infrastructure,sf_localizations,utils,auth,dashboard_shell,home,notifications,sf_shared,profile
dependency_overrides:
auth:
path: ..\\..\\..\\auth
dashboard_shell:
path: ..\\..\\..\\dashboard_shell
design_system:
path: ..\\..\\..\\..\\packages\\design_system
fonts:
path: ..\\..\\..\\..\\packages\\fonts
home:
path: ..\\..\\..\\home
navigation:
path: ..\\..\\..\\..\\packages\\navigation
notifications:
path: ..\\..\\..\\notifications
profile:
path: ..\\..\\..\\profile
sf_infrastructure:
path: ..\\..\\..\\..\\packages\\sf_infrastructure
sf_localizations:
path: ..\\..\\..\\..\\packages\\sf_localizations
sf_shared:
path: ..\\..\\..\\..\\packages\\sf_shared
utils:
path: ..\\..\\..\\..\\packages\\utils

View File

@@ -0,0 +1,31 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
.flutter-plugins-dependencies
/build/
/coverage/

View File

@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "adc901062556672b4138e18a4dc62a4be8f4b3c2"
channel: "stable"
project_type: package

View File

@@ -0,0 +1,3 @@
## 0.0.1
* TODO: Describe initial release.

View File

@@ -0,0 +1 @@
TODO: Add your license here.

View File

@@ -0,0 +1,4 @@
include: package:flutter_lints/flutter.yaml
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View File

@@ -0,0 +1,18 @@
import 'package:legacy_dashboard_shell/legacy_dashboard_shell.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:get_it/get_it.dart';
import 'package:navigation/navigation.dart';
class LegacyDashboardBuilder {
const LegacyDashboardBuilder();
Widget build(BuildContext context, StatefulNavigationShell navShell) {
final NavigationContract navigationContract = GetIt.I<NavigationContract>();
return LegacyDashboardScreen(
navigationShell: navShell,
navigationContract: navigationContract,
);
}
}

View File

@@ -0,0 +1,2 @@
export 'src/presentation/legacy_main_shell_screen.dart';
export 'legacy_dashboard_builder.dart';

View File

@@ -0,0 +1,61 @@
import 'package:legacy_dashboard_shell/src/presentation/legacy_main_shell_view_model.dart';
import 'package:design_system/design_system.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:legacy_dashboard_shell/src/presentation/legacy_main_shell_view_state.dart';
import 'package:navigation/navigation.dart';
import 'package:sf_localizations/sf_localizations.dart';
final mainShellViewModelProvider =
NotifierProvider.autoDispose<LegacyMainShellViewModel, LegacyMainShellViewState>(
() => LegacyMainShellViewModel(),
);
class LegacyDashboardScreen extends ConsumerWidget {
final NavigationContract navigationContract;
final StatefulNavigationShell navigationShell;
const LegacyDashboardScreen({
super.key,
required this.navigationContract,
required this.navigationShell,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
final theme = ref.watch(themePortProvider);
final viewState = ref.watch(mainShellViewModelProvider);
final viewModel = ref.read(mainShellViewModelProvider.notifier);
return Scaffold(
body: navigationShell,
bottomNavigationBar: NavigationBar(
backgroundColor: theme.getColorFor(ThemeCode.backgroundPrimary),
selectedIndex: viewState.selectedIndex,
onDestinationSelected: (index) {
viewModel.onTabChanged(index);
navigationShell.goBranch(index);
},
destinations: [
NavigationDestination(
icon: Icon(Icons.home_outlined),
label: context.translate(I18n.home),
),
NavigationDestination(
icon: Icon(SFIcons.functions),
label: context.translate(I18n.functions),
),
NavigationDestination(
icon: Icon(Icons.location_on_outlined),
label: context.translate(I18n.location),
),
NavigationDestination(
icon: Icon(Icons.chat_outlined),
label: context.translate(I18n.chat),
),
],
),
);
}
}

View File

@@ -0,0 +1,13 @@
import 'package:legacy_dashboard_shell/src/presentation/legacy_main_shell_view_state.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class LegacyMainShellViewModel extends Notifier<LegacyMainShellViewState> {
@override
LegacyMainShellViewState build() {
return LegacyMainShellViewState();
}
void onTabChanged(int index) {
state = state.copyWith(selectedIndex: index);
}
}

View File

@@ -0,0 +1,14 @@
import 'package:freezed_annotation/freezed_annotation.dart';
part 'legacy_main_shell_view_state.freezed.dart';
@freezed
abstract class LegacyMainShellViewState with _$LegacyMainShellViewState {
const factory LegacyMainShellViewState({
@Default(0) int selectedIndex,
@Default(false) bool isLoading,
@Default(false) bool isComplete,
String? error,
}) = _LegacyMainShellViewState;
}

View File

@@ -0,0 +1,280 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
part of 'legacy_main_shell_view_state.dart';
// **************************************************************************
// FreezedGenerator
// **************************************************************************
// dart format off
T _$identity<T>(T value) => value;
/// @nodoc
mixin _$LegacyMainShellViewState {
int get selectedIndex; bool get isLoading; bool get isComplete; String? get error;
/// Create a copy of LegacyMainShellViewState
/// with the given fields replaced by the non-null parameter values.
@JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
$LegacyMainShellViewStateCopyWith<LegacyMainShellViewState> get copyWith => _$LegacyMainShellViewStateCopyWithImpl<LegacyMainShellViewState>(this as LegacyMainShellViewState, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is LegacyMainShellViewState&&(identical(other.selectedIndex, selectedIndex) || other.selectedIndex == selectedIndex)&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.isComplete, isComplete) || other.isComplete == isComplete)&&(identical(other.error, error) || other.error == error));
}
@override
int get hashCode => Object.hash(runtimeType,selectedIndex,isLoading,isComplete,error);
@override
String toString() {
return 'LegacyMainShellViewState(selectedIndex: $selectedIndex, isLoading: $isLoading, isComplete: $isComplete, error: $error)';
}
}
/// @nodoc
abstract mixin class $LegacyMainShellViewStateCopyWith<$Res> {
factory $LegacyMainShellViewStateCopyWith(LegacyMainShellViewState value, $Res Function(LegacyMainShellViewState) _then) = _$LegacyMainShellViewStateCopyWithImpl;
@useResult
$Res call({
int selectedIndex, bool isLoading, bool isComplete, String? error
});
}
/// @nodoc
class _$LegacyMainShellViewStateCopyWithImpl<$Res>
implements $LegacyMainShellViewStateCopyWith<$Res> {
_$LegacyMainShellViewStateCopyWithImpl(this._self, this._then);
final LegacyMainShellViewState _self;
final $Res Function(LegacyMainShellViewState) _then;
/// Create a copy of LegacyMainShellViewState
/// with the given fields replaced by the non-null parameter values.
@pragma('vm:prefer-inline') @override $Res call({Object? selectedIndex = null,Object? isLoading = null,Object? isComplete = null,Object? error = freezed,}) {
return _then(_self.copyWith(
selectedIndex: null == selectedIndex ? _self.selectedIndex : selectedIndex // ignore: cast_nullable_to_non_nullable
as int,isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable
as bool,isComplete: null == isComplete ? _self.isComplete : isComplete // ignore: cast_nullable_to_non_nullable
as bool,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
/// Adds pattern-matching-related methods to [LegacyMainShellViewState].
extension LegacyMainShellViewStatePatterns on LegacyMainShellViewState {
/// A variant of `map` that fallback to returning `orElse`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _LegacyMainShellViewState value)? $default,{required TResult orElse(),}){
final _that = this;
switch (_that) {
case _LegacyMainShellViewState() when $default != null:
return $default(_that);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// Callbacks receives the raw object, upcasted.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case final Subclass2 value:
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _LegacyMainShellViewState value) $default,){
final _that = this;
switch (_that) {
case _LegacyMainShellViewState():
return $default(_that);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `map` that fallback to returning `null`.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case final Subclass value:
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _LegacyMainShellViewState value)? $default,){
final _that = this;
switch (_that) {
case _LegacyMainShellViewState() when $default != null:
return $default(_that);case _:
return null;
}
}
/// A variant of `when` that fallback to an `orElse` callback.
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return orElse();
/// }
/// ```
@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( int selectedIndex, bool isLoading, bool isComplete, String? error)? $default,{required TResult orElse(),}) {final _that = this;
switch (_that) {
case _LegacyMainShellViewState() when $default != null:
return $default(_that.selectedIndex,_that.isLoading,_that.isComplete,_that.error);case _:
return orElse();
}
}
/// A `switch`-like method, using callbacks.
///
/// As opposed to `map`, this offers destructuring.
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case Subclass2(:final field2):
/// return ...;
/// }
/// ```
@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( int selectedIndex, bool isLoading, bool isComplete, String? error) $default,) {final _that = this;
switch (_that) {
case _LegacyMainShellViewState():
return $default(_that.selectedIndex,_that.isLoading,_that.isComplete,_that.error);case _:
throw StateError('Unexpected subclass');
}
}
/// A variant of `when` that fallback to returning `null`
///
/// It is equivalent to doing:
/// ```dart
/// switch (sealedClass) {
/// case Subclass(:final field):
/// return ...;
/// case _:
/// return null;
/// }
/// ```
@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( int selectedIndex, bool isLoading, bool isComplete, String? error)? $default,) {final _that = this;
switch (_that) {
case _LegacyMainShellViewState() when $default != null:
return $default(_that.selectedIndex,_that.isLoading,_that.isComplete,_that.error);case _:
return null;
}
}
}
/// @nodoc
class _LegacyMainShellViewState implements LegacyMainShellViewState {
const _LegacyMainShellViewState({this.selectedIndex = 0, this.isLoading = false, this.isComplete = false, this.error});
@override@JsonKey() final int selectedIndex;
@override@JsonKey() final bool isLoading;
@override@JsonKey() final bool isComplete;
@override final String? error;
/// Create a copy of LegacyMainShellViewState
/// with the given fields replaced by the non-null parameter values.
@override @JsonKey(includeFromJson: false, includeToJson: false)
@pragma('vm:prefer-inline')
_$LegacyMainShellViewStateCopyWith<_LegacyMainShellViewState> get copyWith => __$LegacyMainShellViewStateCopyWithImpl<_LegacyMainShellViewState>(this, _$identity);
@override
bool operator ==(Object other) {
return identical(this, other) || (other.runtimeType == runtimeType&&other is _LegacyMainShellViewState&&(identical(other.selectedIndex, selectedIndex) || other.selectedIndex == selectedIndex)&&(identical(other.isLoading, isLoading) || other.isLoading == isLoading)&&(identical(other.isComplete, isComplete) || other.isComplete == isComplete)&&(identical(other.error, error) || other.error == error));
}
@override
int get hashCode => Object.hash(runtimeType,selectedIndex,isLoading,isComplete,error);
@override
String toString() {
return 'LegacyMainShellViewState(selectedIndex: $selectedIndex, isLoading: $isLoading, isComplete: $isComplete, error: $error)';
}
}
/// @nodoc
abstract mixin class _$LegacyMainShellViewStateCopyWith<$Res> implements $LegacyMainShellViewStateCopyWith<$Res> {
factory _$LegacyMainShellViewStateCopyWith(_LegacyMainShellViewState value, $Res Function(_LegacyMainShellViewState) _then) = __$LegacyMainShellViewStateCopyWithImpl;
@override @useResult
$Res call({
int selectedIndex, bool isLoading, bool isComplete, String? error
});
}
/// @nodoc
class __$LegacyMainShellViewStateCopyWithImpl<$Res>
implements _$LegacyMainShellViewStateCopyWith<$Res> {
__$LegacyMainShellViewStateCopyWithImpl(this._self, this._then);
final _LegacyMainShellViewState _self;
final $Res Function(_LegacyMainShellViewState) _then;
/// Create a copy of LegacyMainShellViewState
/// with the given fields replaced by the non-null parameter values.
@override @pragma('vm:prefer-inline') $Res call({Object? selectedIndex = null,Object? isLoading = null,Object? isComplete = null,Object? error = freezed,}) {
return _then(_LegacyMainShellViewState(
selectedIndex: null == selectedIndex ? _self.selectedIndex : selectedIndex // ignore: cast_nullable_to_non_nullable
as int,isLoading: null == isLoading ? _self.isLoading : isLoading // ignore: cast_nullable_to_non_nullable
as bool,isComplete: null == isComplete ? _self.isComplete : isComplete // ignore: cast_nullable_to_non_nullable
as bool,error: freezed == error ? _self.error : error // ignore: cast_nullable_to_non_nullable
as String?,
));
}
}
// dart format on

View File

@@ -0,0 +1,77 @@
name: legacy_dashboard_shell
resoluction: workspace
description: "A new Flutter package project."
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 0.0.1
homepage:
environment:
sdk: ^3.9.2
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
#modules dependencies go here
hub:
path: ../../modules/hub
#packages dependencies go here
design_system:
path: ../../../../packages/design_system
sf_localizations:
path: ../../../../packages/sf_localizations
#dependencies go here
navigation: ^0.0.1
get_it: ^9.0.5
go_router: ^17.0.0
flutter_riverpod: ^3.0.3
freezed_annotation: ^3.1.0
freezed: ^3.2.3
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
riverpod_generator: ^3.0.3
build_runner: ^2.7.1
riverpod_lint: ^3.0.3
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter packages.
flutter:
# To add assets to your package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
#
# For details regarding assets in packages, see
# https://flutter.dev/to/asset-from-package
#
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/to/resolution-aware-images
# To add custom fonts to your package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts in packages, see
# https://flutter.dev/to/font-from-package

View File

@@ -0,0 +1,28 @@
# melos_managed_dependency_overrides: auth,design_system,fonts,home,navigation,notifications,sf_infrastructure,sf_localizations,sf_shared,utils,dashboard_shell,hub,profile
dependency_overrides:
auth:
path: ..\\..\\..\\auth
dashboard_shell:
path: ..\\..\\..\\dashboard_shell
design_system:
path: ..\\..\\..\\..\\packages\\design_system
fonts:
path: ..\\..\\..\\..\\packages\\fonts
home:
path: ..\\..\\..\\home
hub:
path: ..\\hub
navigation:
path: ..\\..\\..\\..\\packages\\navigation
notifications:
path: ..\\..\\..\\notifications
profile:
path: ..\\..\\..\\profile
sf_infrastructure:
path: ..\\..\\..\\..\\packages\\sf_infrastructure
sf_localizations:
path: ..\\..\\..\\..\\packages\\sf_localizations
sf_shared:
path: ..\\..\\..\\..\\packages\\sf_shared
utils:
path: ..\\..\\..\\..\\packages\\utils

213
modules/legacy/pubspec.lock Normal file
View File

@@ -0,0 +1,213 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.dev"
source: hosted
version: "2.13.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
characters:
dependency: transitive
description:
name: characters
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
version: "1.4.0"
clock:
dependency: transitive
description:
name: clock
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
version: "1.19.1"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
url: "https://pub.dev"
source: hosted
version: "1.0.8"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.dev"
source: hosted
version: "1.3.3"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.dev"
source: hosted
version: "5.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
source: hosted
version: "11.0.2"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
lints:
dependency: transitive
description:
name: lints
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
url: "https://pub.dev"
source: hosted
version: "5.1.1"
matcher:
dependency: transitive
description:
name: matcher
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
version: "1.16.0"
path:
dependency: transitive
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
source_span:
dependency: transitive
description:
name: source_span
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
url: "https://pub.dev"
source: hosted
version: "0.7.6"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
version: "2.2.0"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
url: "https://pub.dev"
source: hosted
version: "15.0.2"
sdks:
dart: ">=3.9.2 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"

View File

@@ -0,0 +1,87 @@
name: legacy
description: "A new Flutter project."
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
#
# This version is used _only_ for the Runner app, which is used if you just do
# a `flutter run`. It has no impact on any other native host app that you embed
# your Flutter project into.
version: 1.0.0+1
environment:
sdk: ^3.9.2
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add Flutter specific assets to your application, add an assets section,
# like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/to/resolution-aware-images
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/to/asset-from-package
# To add Flutter specific custom fonts to your application, add a fonts
# section here, in this "flutter" section. Each entry in this list should
# have a "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/to/font-from-package
# This section identifies your Flutter project as a module meant for
# embedding in a native host app. These identifiers should _not_ ordinarily
# be changed after generation - they are used to ensure that the tooling can
# maintain consistency when adding or modifying assets and plugins.
# They also do not have any bearing on your native host application's
# identifiers, which may be completely independent or the same as these.
module:
androidX: true
androidPackage: com.example.legacy
iosBundleIdentifier: com.example.legacy

View File

@@ -1,6 +1,5 @@
class AppRoutes {
static const splash = '/splash';
static const hub = '/hub';
static const login = '/login';
static const signup = '/signup';
static const onboarding = '/onboarding';
@@ -15,4 +14,10 @@ class AppRoutes {
static const dashboardActivity = '$dashboard/activity';
static const dashboardNotifications = '$dashboard/notifications';
static const dashboardProfile = '$dashboard/profile';
static const legacy = '/legacy';
static const legacyDashboard = '$legacy/dashboard';
static const dashboardHub = '$legacyDashboard/hub';
}

View File

@@ -136,5 +136,8 @@
"functions": "Functions",
"accountSettings": "Account Settings",
"deviceSettings": "Device Settings",
"watchesOnMap": "Smartwatch on the map"
"watchesOnMap": "Smartwatch on the map",
"home": "Home",
"location": "Location",
"chat": "Chat"
}

View File

@@ -131,10 +131,13 @@
"secretCodeStep3Title": "Copia el código generado",
"secretCodeStep3Body": "Después de escanear el código QR o introducir la llave en la aplicación de autenticación, copia el código generado de 6 dígitos e introdúcelo en la siguiente pantalla.",
"secretCodeConfigure": "Configurar",
"customerService": "Servicio de Atención al Cliente",
"customerService": "Soporte",
"sfPay": "SaveFamily Pay",
"functions": "Funciones",
"accountSettings": "Ajustes de la cuenta",
"deviceSettings": "Ajustes del dispositivo",
"watchesOnMap": "Relojes en el mapa"
"accountSettings": "Perfil de cuenta",
"deviceSettings": "Ajustes",
"watchesOnMap": "Reloj inteligente en el mapa",
"home": "Inicio",
"location": "Mapa",
"chat": "Chat"
}

View File

@@ -167,4 +167,7 @@ class I18n {
static const String accountSettings = 'accountSettings';
static const String deviceSettings = 'deviceSettings';
static const String watchesOnMap = 'watchesOnMap';
static const String home = 'home';
static const String location = 'location';
static const String chat = 'chat';
}