Add font scaling
This commit is contained in:
parent
e883d03737
commit
8f3a25a9c1
|
|
@ -250,6 +250,12 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
||||||
state.prefState.enableDarkMode ? Colors.white : Colors.black87,
|
state.prefState.enableDarkMode ? Colors.white : Colors.black87,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// https://stackoverflow.com/a/69883043/497368
|
||||||
|
MediaQueryData windowData =
|
||||||
|
MediaQueryData.fromWindow(WidgetsBinding.instance.window);
|
||||||
|
windowData = windowData.copyWith(
|
||||||
|
textScaleFactor: state.prefState.textScaleFactor);
|
||||||
|
|
||||||
return StyledToast(
|
return StyledToast(
|
||||||
locale: locale,
|
locale: locale,
|
||||||
duration: Duration(seconds: 3),
|
duration: Duration(seconds: 3),
|
||||||
|
|
@ -262,290 +268,310 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
||||||
),
|
),
|
||||||
child: WebSocketRefresh(
|
child: WebSocketRefresh(
|
||||||
companyId: state.company?.id,
|
companyId: state.company?.id,
|
||||||
child: MaterialApp(
|
child: MediaQuery(
|
||||||
scrollBehavior: MyCustomScrollBehavior(),
|
data: windowData,
|
||||||
navigatorKey: navigatorKey,
|
child: MaterialApp(
|
||||||
supportedLocales: kLanguages
|
useInheritedMediaQuery: true,
|
||||||
.map(
|
scrollBehavior: MyCustomScrollBehavior(),
|
||||||
(String locale) => AppLocalization.createLocale(locale))
|
navigatorKey: navigatorKey,
|
||||||
.toList(),
|
supportedLocales: kLanguages
|
||||||
debugShowCheckedModeBanner: false,
|
.map((String locale) =>
|
||||||
//showPerformanceOverlay: true,
|
AppLocalization.createLocale(locale))
|
||||||
navigatorObservers: [
|
.toList(),
|
||||||
SentryNavigatorObserver(),
|
debugShowCheckedModeBanner: false,
|
||||||
],
|
//showPerformanceOverlay: true,
|
||||||
localizationsDelegates: [
|
navigatorObservers: [
|
||||||
const AppLocalizationsDelegate(),
|
SentryNavigatorObserver(),
|
||||||
GlobalCupertinoLocalizations.delegate,
|
],
|
||||||
GlobalWidgetsLocalizations.delegate,
|
localizationsDelegates: [
|
||||||
GlobalMaterialLocalizations.delegate
|
const AppLocalizationsDelegate(),
|
||||||
],
|
GlobalCupertinoLocalizations.delegate,
|
||||||
home: state.prefState.requireAuthentication && !_authenticated
|
GlobalWidgetsLocalizations.delegate,
|
||||||
? LockScreen(onAuthenticatePressed: _authenticate)
|
GlobalMaterialLocalizations.delegate
|
||||||
: InitScreen(),
|
],
|
||||||
locale: locale,
|
home: state.prefState.requireAuthentication && !_authenticated
|
||||||
theme: state.prefState.enableDarkMode
|
? LockScreen(onAuthenticatePressed: _authenticate)
|
||||||
? ThemeData(
|
: InitScreen(),
|
||||||
colorScheme: ColorScheme.dark().copyWith(
|
locale: locale,
|
||||||
secondary: accentColor,
|
theme: state.prefState.enableDarkMode
|
||||||
primary: accentColor,
|
? ThemeData(
|
||||||
),
|
colorScheme: ColorScheme.dark().copyWith(
|
||||||
pageTransitionsTheme: pageTransitionsTheme,
|
secondary: accentColor,
|
||||||
indicatorColor: accentColor,
|
primary: accentColor,
|
||||||
textSelectionTheme: TextSelectionThemeData(
|
|
||||||
selectionHandleColor: accentColor,
|
|
||||||
),
|
|
||||||
fontFamily: fontFamily,
|
|
||||||
backgroundColor: Colors.black,
|
|
||||||
canvasColor: Colors.black,
|
|
||||||
cardColor: const Color(0xFF1B1C1E),
|
|
||||||
bottomAppBarColor: const Color(0xFF1B1C1E),
|
|
||||||
primaryColorDark: Colors.black,
|
|
||||||
textButtonTheme:
|
|
||||||
TextButtonThemeData(style: textButtonTheme),
|
|
||||||
outlinedButtonTheme:
|
|
||||||
OutlinedButtonThemeData(style: outlinedButtonTheme),
|
|
||||||
)
|
|
||||||
: ThemeData(
|
|
||||||
colorScheme: ColorScheme.fromSwatch()
|
|
||||||
.copyWith(secondary: accentColor),
|
|
||||||
pageTransitionsTheme: pageTransitionsTheme,
|
|
||||||
primaryColor: accentColor,
|
|
||||||
indicatorColor: accentColor,
|
|
||||||
textSelectionTheme: TextSelectionThemeData(
|
|
||||||
selectionColor: accentColor,
|
|
||||||
),
|
|
||||||
fontFamily: fontFamily,
|
|
||||||
backgroundColor: Colors.white,
|
|
||||||
canvasColor: Colors.white,
|
|
||||||
cardColor: Colors.white,
|
|
||||||
bottomAppBarColor: Colors.white,
|
|
||||||
primaryColorDark: hasAccentColor
|
|
||||||
? accentColor
|
|
||||||
: const Color(0xFF0D5D91),
|
|
||||||
primaryColorLight: hasAccentColor
|
|
||||||
? accentColor
|
|
||||||
: const Color(0xFF5dabf4),
|
|
||||||
scaffoldBackgroundColor: const Color(0xFFE4E8EB),
|
|
||||||
tabBarTheme: TabBarTheme(
|
|
||||||
labelColor:
|
|
||||||
hasAccentColor ? Colors.white : Colors.black,
|
|
||||||
unselectedLabelColor: hasAccentColor
|
|
||||||
? Colors.white.withOpacity(.65)
|
|
||||||
: Colors.black.withOpacity(.65),
|
|
||||||
),
|
|
||||||
iconTheme: IconThemeData(
|
|
||||||
color: hasAccentColor ? null : accentColor,
|
|
||||||
),
|
|
||||||
appBarTheme: AppBarTheme(
|
|
||||||
color: hasAccentColor ? accentColor : Colors.white,
|
|
||||||
iconTheme: IconThemeData(
|
|
||||||
color: hasAccentColor ? Colors.white : accentColor,
|
|
||||||
),
|
),
|
||||||
titleTextStyle: TextStyle(
|
pageTransitionsTheme: pageTransitionsTheme,
|
||||||
fontSize: 20,
|
indicatorColor: accentColor,
|
||||||
|
textSelectionTheme: TextSelectionThemeData(
|
||||||
|
selectionHandleColor: accentColor,
|
||||||
|
),
|
||||||
|
fontFamily: fontFamily,
|
||||||
|
backgroundColor: Colors.black,
|
||||||
|
canvasColor: Colors.black,
|
||||||
|
cardColor: const Color(0xFF1B1C1E),
|
||||||
|
bottomAppBarColor: const Color(0xFF1B1C1E),
|
||||||
|
primaryColorDark: Colors.black,
|
||||||
|
textButtonTheme:
|
||||||
|
TextButtonThemeData(style: textButtonTheme),
|
||||||
|
outlinedButtonTheme: OutlinedButtonThemeData(
|
||||||
|
style: outlinedButtonTheme),
|
||||||
|
)
|
||||||
|
: ThemeData(
|
||||||
|
colorScheme: ColorScheme.fromSwatch()
|
||||||
|
.copyWith(secondary: accentColor),
|
||||||
|
pageTransitionsTheme: pageTransitionsTheme,
|
||||||
|
primaryColor: accentColor,
|
||||||
|
indicatorColor: accentColor,
|
||||||
|
textSelectionTheme: TextSelectionThemeData(
|
||||||
|
selectionColor: accentColor,
|
||||||
|
),
|
||||||
|
fontFamily: fontFamily,
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
canvasColor: Colors.white,
|
||||||
|
cardColor: Colors.white,
|
||||||
|
bottomAppBarColor: Colors.white,
|
||||||
|
primaryColorDark: hasAccentColor
|
||||||
|
? accentColor
|
||||||
|
: const Color(0xFF0D5D91),
|
||||||
|
primaryColorLight: hasAccentColor
|
||||||
|
? accentColor
|
||||||
|
: const Color(0xFF5dabf4),
|
||||||
|
scaffoldBackgroundColor: const Color(0xFFE4E8EB),
|
||||||
|
tabBarTheme: TabBarTheme(
|
||||||
|
labelColor:
|
||||||
|
hasAccentColor ? Colors.white : Colors.black,
|
||||||
|
unselectedLabelColor: hasAccentColor
|
||||||
|
? Colors.white.withOpacity(.65)
|
||||||
|
: Colors.black.withOpacity(.65),
|
||||||
|
),
|
||||||
|
iconTheme: IconThemeData(
|
||||||
|
color: hasAccentColor ? null : accentColor,
|
||||||
|
),
|
||||||
|
appBarTheme: AppBarTheme(
|
||||||
|
color: hasAccentColor ? accentColor : Colors.white,
|
||||||
|
iconTheme: IconThemeData(
|
||||||
color:
|
color:
|
||||||
hasAccentColor ? Colors.white : Colors.black),
|
hasAccentColor ? Colors.white : accentColor,
|
||||||
),
|
|
||||||
textButtonTheme:
|
|
||||||
TextButtonThemeData(style: textButtonTheme),
|
|
||||||
outlinedButtonTheme:
|
|
||||||
OutlinedButtonThemeData(style: outlinedButtonTheme),
|
|
||||||
),
|
|
||||||
title: kAppName,
|
|
||||||
onGenerateRoute: isMobile(context) ? null : generateRoute,
|
|
||||||
routes: isMobile(context)
|
|
||||||
? {
|
|
||||||
LoginScreen.route: (context) => LoginScreen(),
|
|
||||||
MainScreen.route: (context) => MainScreen(),
|
|
||||||
DashboardScreenBuilder.route: (context) =>
|
|
||||||
ChangeLayoutBanner(
|
|
||||||
suggestedLayout: AppLayout.mobile,
|
|
||||||
appLayout: state.prefState.appLayout,
|
|
||||||
child: DashboardScreenBuilder(),
|
|
||||||
),
|
),
|
||||||
ProductScreen.route: (context) =>
|
titleTextStyle: TextStyle(
|
||||||
ProductScreenBuilder(),
|
fontSize: 20,
|
||||||
ProductViewScreen.route: (context) =>
|
color: hasAccentColor
|
||||||
ProductViewScreen(),
|
? Colors.white
|
||||||
ProductEditScreen.route: (context) =>
|
: Colors.black),
|
||||||
ProductEditScreen(),
|
),
|
||||||
ClientScreen.route: (context) => ClientScreenBuilder(),
|
textButtonTheme:
|
||||||
ClientViewScreen.route: (context) => ClientViewScreen(),
|
TextButtonThemeData(style: textButtonTheme),
|
||||||
ClientEditScreen.route: (context) => ClientEditScreen(),
|
outlinedButtonTheme: OutlinedButtonThemeData(
|
||||||
ClientPdfScreen.route: (context) => ClientPdfScreen(),
|
style: outlinedButtonTheme),
|
||||||
InvoiceScreen.route: (context) =>
|
),
|
||||||
InvoiceScreenBuilder(),
|
title: kAppName,
|
||||||
InvoiceViewScreen.route: (context) =>
|
onGenerateRoute: isMobile(context) ? null : generateRoute,
|
||||||
InvoiceViewScreen(),
|
routes: isMobile(context)
|
||||||
InvoiceEditScreen.route: (context) =>
|
? {
|
||||||
InvoiceEditScreen(),
|
LoginScreen.route: (context) => LoginScreen(),
|
||||||
InvoiceEmailScreen.route: (context) =>
|
MainScreen.route: (context) => MainScreen(),
|
||||||
InvoiceEmailScreen(),
|
DashboardScreenBuilder.route: (context) =>
|
||||||
InvoicePdfScreen.route: (context) => InvoicePdfScreen(),
|
ChangeLayoutBanner(
|
||||||
DocumentScreen.route: (context) =>
|
suggestedLayout: AppLayout.mobile,
|
||||||
DocumentScreenBuilder(),
|
appLayout: state.prefState.appLayout,
|
||||||
DocumentViewScreen.route: (context) =>
|
child: DashboardScreenBuilder(),
|
||||||
DocumentViewScreen(),
|
),
|
||||||
DocumentEditScreen.route: (context) =>
|
ProductScreen.route: (context) =>
|
||||||
DocumentEditScreen(),
|
ProductScreenBuilder(),
|
||||||
ExpenseScreen.route: (context) =>
|
ProductViewScreen.route: (context) =>
|
||||||
ExpenseScreenBuilder(),
|
ProductViewScreen(),
|
||||||
ExpenseViewScreen.route: (context) =>
|
ProductEditScreen.route: (context) =>
|
||||||
ExpenseViewScreen(),
|
ProductEditScreen(),
|
||||||
ExpenseEditScreen.route: (context) =>
|
ClientScreen.route: (context) =>
|
||||||
ExpenseEditScreen(),
|
ClientScreenBuilder(),
|
||||||
VendorScreen.route: (context) => VendorScreenBuilder(),
|
ClientViewScreen.route: (context) =>
|
||||||
VendorViewScreen.route: (context) => VendorViewScreen(),
|
ClientViewScreen(),
|
||||||
VendorEditScreen.route: (context) => VendorEditScreen(),
|
ClientEditScreen.route: (context) =>
|
||||||
TaskScreen.route: (context) => TaskScreenBuilder(),
|
ClientEditScreen(),
|
||||||
TaskViewScreen.route: (context) => TaskViewScreen(),
|
ClientPdfScreen.route: (context) => ClientPdfScreen(),
|
||||||
TaskEditScreen.route: (context) => TaskEditScreen(),
|
InvoiceScreen.route: (context) =>
|
||||||
ProjectScreen.route: (context) =>
|
InvoiceScreenBuilder(),
|
||||||
ProjectScreenBuilder(),
|
InvoiceViewScreen.route: (context) =>
|
||||||
ProjectViewScreen.route: (context) =>
|
InvoiceViewScreen(),
|
||||||
ProjectViewScreen(),
|
InvoiceEditScreen.route: (context) =>
|
||||||
ProjectEditScreen.route: (context) =>
|
InvoiceEditScreen(),
|
||||||
ProjectEditScreen(),
|
InvoiceEmailScreen.route: (context) =>
|
||||||
PaymentScreen.route: (context) =>
|
InvoiceEmailScreen(),
|
||||||
PaymentScreenBuilder(),
|
InvoicePdfScreen.route: (context) =>
|
||||||
PaymentViewScreen.route: (context) =>
|
InvoicePdfScreen(),
|
||||||
PaymentViewScreen(),
|
DocumentScreen.route: (context) =>
|
||||||
PaymentEditScreen.route: (context) =>
|
DocumentScreenBuilder(),
|
||||||
PaymentEditScreen(),
|
DocumentViewScreen.route: (context) =>
|
||||||
PaymentRefundScreen.route: (context) =>
|
DocumentViewScreen(),
|
||||||
PaymentRefundScreen(),
|
DocumentEditScreen.route: (context) =>
|
||||||
QuoteScreen.route: (context) => QuoteScreenBuilder(),
|
DocumentEditScreen(),
|
||||||
QuoteViewScreen.route: (context) => QuoteViewScreen(),
|
ExpenseScreen.route: (context) =>
|
||||||
QuoteEditScreen.route: (context) => QuoteEditScreen(),
|
ExpenseScreenBuilder(),
|
||||||
QuoteEmailScreen.route: (context) => QuoteEmailScreen(),
|
ExpenseViewScreen.route: (context) =>
|
||||||
QuotePdfScreen.route: (context) => QuotePdfScreen(),
|
ExpenseViewScreen(),
|
||||||
// STARTER: routes - do not remove comment
|
ExpenseEditScreen.route: (context) =>
|
||||||
RecurringExpenseScreen.route: (context) =>
|
ExpenseEditScreen(),
|
||||||
RecurringExpenseScreenBuilder(),
|
VendorScreen.route: (context) =>
|
||||||
RecurringExpenseViewScreen.route: (context) =>
|
VendorScreenBuilder(),
|
||||||
RecurringExpenseViewScreen(),
|
VendorViewScreen.route: (context) =>
|
||||||
RecurringExpenseEditScreen.route: (context) =>
|
VendorViewScreen(),
|
||||||
RecurringExpenseEditScreen(),
|
VendorEditScreen.route: (context) =>
|
||||||
|
VendorEditScreen(),
|
||||||
|
TaskScreen.route: (context) => TaskScreenBuilder(),
|
||||||
|
TaskViewScreen.route: (context) => TaskViewScreen(),
|
||||||
|
TaskEditScreen.route: (context) => TaskEditScreen(),
|
||||||
|
ProjectScreen.route: (context) =>
|
||||||
|
ProjectScreenBuilder(),
|
||||||
|
ProjectViewScreen.route: (context) =>
|
||||||
|
ProjectViewScreen(),
|
||||||
|
ProjectEditScreen.route: (context) =>
|
||||||
|
ProjectEditScreen(),
|
||||||
|
PaymentScreen.route: (context) =>
|
||||||
|
PaymentScreenBuilder(),
|
||||||
|
PaymentViewScreen.route: (context) =>
|
||||||
|
PaymentViewScreen(),
|
||||||
|
PaymentEditScreen.route: (context) =>
|
||||||
|
PaymentEditScreen(),
|
||||||
|
PaymentRefundScreen.route: (context) =>
|
||||||
|
PaymentRefundScreen(),
|
||||||
|
QuoteScreen.route: (context) => QuoteScreenBuilder(),
|
||||||
|
QuoteViewScreen.route: (context) => QuoteViewScreen(),
|
||||||
|
QuoteEditScreen.route: (context) => QuoteEditScreen(),
|
||||||
|
QuoteEmailScreen.route: (context) =>
|
||||||
|
QuoteEmailScreen(),
|
||||||
|
QuotePdfScreen.route: (context) => QuotePdfScreen(),
|
||||||
|
// STARTER: routes - do not remove comment
|
||||||
|
RecurringExpenseScreen.route: (context) =>
|
||||||
|
RecurringExpenseScreenBuilder(),
|
||||||
|
RecurringExpenseViewScreen.route: (context) =>
|
||||||
|
RecurringExpenseViewScreen(),
|
||||||
|
RecurringExpenseEditScreen.route: (context) =>
|
||||||
|
RecurringExpenseEditScreen(),
|
||||||
|
|
||||||
SubscriptionScreen.route: (context) =>
|
SubscriptionScreen.route: (context) =>
|
||||||
SubscriptionScreenBuilder(),
|
SubscriptionScreenBuilder(),
|
||||||
SubscriptionViewScreen.route: (context) =>
|
SubscriptionViewScreen.route: (context) =>
|
||||||
SubscriptionViewScreen(),
|
SubscriptionViewScreen(),
|
||||||
SubscriptionEditScreen.route: (context) =>
|
SubscriptionEditScreen.route: (context) =>
|
||||||
SubscriptionEditScreen(),
|
SubscriptionEditScreen(),
|
||||||
|
|
||||||
TaskStatusScreen.route: (context) =>
|
TaskStatusScreen.route: (context) =>
|
||||||
TaskStatusScreenBuilder(),
|
TaskStatusScreenBuilder(),
|
||||||
TaskStatusViewScreen.route: (context) =>
|
TaskStatusViewScreen.route: (context) =>
|
||||||
TaskStatusViewScreen(),
|
TaskStatusViewScreen(),
|
||||||
TaskStatusEditScreen.route: (context) =>
|
TaskStatusEditScreen.route: (context) =>
|
||||||
TaskStatusEditScreen(),
|
TaskStatusEditScreen(),
|
||||||
ExpenseCategoryScreen.route: (context) =>
|
ExpenseCategoryScreen.route: (context) =>
|
||||||
ExpenseCategoryScreenBuilder(),
|
ExpenseCategoryScreenBuilder(),
|
||||||
ExpenseCategoryViewScreen.route: (context) =>
|
ExpenseCategoryViewScreen.route: (context) =>
|
||||||
ExpenseCategoryViewScreen(),
|
ExpenseCategoryViewScreen(),
|
||||||
ExpenseCategoryEditScreen.route: (context) =>
|
ExpenseCategoryEditScreen.route: (context) =>
|
||||||
ExpenseCategoryEditScreen(),
|
ExpenseCategoryEditScreen(),
|
||||||
RecurringInvoiceScreen.route: (context) =>
|
RecurringInvoiceScreen.route: (context) =>
|
||||||
RecurringInvoiceScreenBuilder(),
|
RecurringInvoiceScreenBuilder(),
|
||||||
RecurringInvoiceViewScreen.route: (context) =>
|
RecurringInvoiceViewScreen.route: (context) =>
|
||||||
RecurringInvoiceViewScreen(),
|
RecurringInvoiceViewScreen(),
|
||||||
RecurringInvoiceEditScreen.route: (context) =>
|
RecurringInvoiceEditScreen.route: (context) =>
|
||||||
RecurringInvoiceEditScreen(),
|
RecurringInvoiceEditScreen(),
|
||||||
RecurringInvoicePdfScreen.route: (context) =>
|
RecurringInvoicePdfScreen.route: (context) =>
|
||||||
RecurringInvoicePdfScreen(),
|
RecurringInvoicePdfScreen(),
|
||||||
WebhookScreen.route: (context) =>
|
WebhookScreen.route: (context) =>
|
||||||
WebhookScreenBuilder(),
|
WebhookScreenBuilder(),
|
||||||
WebhookViewScreen.route: (context) =>
|
WebhookViewScreen.route: (context) =>
|
||||||
WebhookViewScreen(),
|
WebhookViewScreen(),
|
||||||
WebhookEditScreen.route: (context) =>
|
WebhookEditScreen.route: (context) =>
|
||||||
WebhookEditScreen(),
|
WebhookEditScreen(),
|
||||||
TokenScreen.route: (context) => TokenScreenBuilder(),
|
TokenScreen.route: (context) => TokenScreenBuilder(),
|
||||||
TokenViewScreen.route: (context) => TokenViewScreen(),
|
TokenViewScreen.route: (context) => TokenViewScreen(),
|
||||||
TokenEditScreen.route: (context) => TokenEditScreen(),
|
TokenEditScreen.route: (context) => TokenEditScreen(),
|
||||||
PaymentTermScreen.route: (context) =>
|
PaymentTermScreen.route: (context) =>
|
||||||
PaymentTermScreenBuilder(),
|
PaymentTermScreenBuilder(),
|
||||||
PaymentTermEditScreen.route: (context) =>
|
PaymentTermEditScreen.route: (context) =>
|
||||||
PaymentTermEditScreen(),
|
PaymentTermEditScreen(),
|
||||||
PaymentTermViewScreen.route: (context) =>
|
PaymentTermViewScreen.route: (context) =>
|
||||||
PaymentTermViewScreen(),
|
PaymentTermViewScreen(),
|
||||||
DesignScreen.route: (context) => DesignScreenBuilder(),
|
DesignScreen.route: (context) =>
|
||||||
DesignViewScreen.route: (context) => DesignViewScreen(),
|
DesignScreenBuilder(),
|
||||||
DesignEditScreen.route: (context) => DesignEditScreen(),
|
DesignViewScreen.route: (context) =>
|
||||||
CreditScreen.route: (context) => CreditScreenBuilder(),
|
DesignViewScreen(),
|
||||||
CreditViewScreen.route: (context) => CreditViewScreen(),
|
DesignEditScreen.route: (context) =>
|
||||||
CreditEditScreen.route: (context) => CreditEditScreen(),
|
DesignEditScreen(),
|
||||||
CreditEmailScreen.route: (context) =>
|
CreditScreen.route: (context) =>
|
||||||
CreditEmailScreen(),
|
CreditScreenBuilder(),
|
||||||
CreditPdfScreen.route: (context) => CreditPdfScreen(),
|
CreditViewScreen.route: (context) =>
|
||||||
UserScreen.route: (context) => UserScreenBuilder(),
|
CreditViewScreen(),
|
||||||
UserViewScreen.route: (context) => UserViewScreen(),
|
CreditEditScreen.route: (context) =>
|
||||||
UserEditScreen.route: (context) => UserEditScreen(),
|
CreditEditScreen(),
|
||||||
GroupSettingsScreen.route: (context) =>
|
CreditEmailScreen.route: (context) =>
|
||||||
GroupScreenBuilder(),
|
CreditEmailScreen(),
|
||||||
GroupViewScreen.route: (context) => GroupViewScreen(),
|
CreditPdfScreen.route: (context) => CreditPdfScreen(),
|
||||||
GroupEditScreen.route: (context) => GroupEditScreen(),
|
UserScreen.route: (context) => UserScreenBuilder(),
|
||||||
SettingsScreen.route: (context) =>
|
UserViewScreen.route: (context) => UserViewScreen(),
|
||||||
SettingsScreenBuilder(),
|
UserEditScreen.route: (context) => UserEditScreen(),
|
||||||
ReportsScreen.route: (context) =>
|
GroupSettingsScreen.route: (context) =>
|
||||||
ReportsScreenBuilder(),
|
GroupScreenBuilder(),
|
||||||
CompanyDetailsScreen.route: (context) =>
|
GroupViewScreen.route: (context) => GroupViewScreen(),
|
||||||
CompanyDetailsScreen(),
|
GroupEditScreen.route: (context) => GroupEditScreen(),
|
||||||
UserDetailsScreen.route: (context) =>
|
SettingsScreen.route: (context) =>
|
||||||
UserDetailsScreen(),
|
SettingsScreenBuilder(),
|
||||||
LocalizationScreen.route: (context) =>
|
ReportsScreen.route: (context) =>
|
||||||
LocalizationScreen(),
|
ReportsScreenBuilder(),
|
||||||
OnlinePaymentsScreen.route: (context) =>
|
CompanyDetailsScreen.route: (context) =>
|
||||||
OnlinePaymentsScreen(),
|
CompanyDetailsScreen(),
|
||||||
CompanyGatewayScreen.route: (context) =>
|
UserDetailsScreen.route: (context) =>
|
||||||
CompanyGatewayScreenBuilder(),
|
UserDetailsScreen(),
|
||||||
CompanyGatewayViewScreen.route: (context) =>
|
LocalizationScreen.route: (context) =>
|
||||||
CompanyGatewayViewScreen(),
|
LocalizationScreen(),
|
||||||
CompanyGatewayEditScreen.route: (context) =>
|
OnlinePaymentsScreen.route: (context) =>
|
||||||
CompanyGatewayEditScreen(),
|
OnlinePaymentsScreen(),
|
||||||
TaxSettingsScreen.route: (context) =>
|
CompanyGatewayScreen.route: (context) =>
|
||||||
TaxSettingsScreen(),
|
CompanyGatewayScreenBuilder(),
|
||||||
TaxRateSettingsScreen.route: (context) =>
|
CompanyGatewayViewScreen.route: (context) =>
|
||||||
TaxRateScreenBuilder(),
|
CompanyGatewayViewScreen(),
|
||||||
TaxRateViewScreen.route: (context) =>
|
CompanyGatewayEditScreen.route: (context) =>
|
||||||
TaxRateViewScreen(),
|
CompanyGatewayEditScreen(),
|
||||||
TaxRateEditScreen.route: (context) =>
|
TaxSettingsScreen.route: (context) =>
|
||||||
TaxRateEditScreen(),
|
TaxSettingsScreen(),
|
||||||
ProductSettingsScreen.route: (context) =>
|
TaxRateSettingsScreen.route: (context) =>
|
||||||
ProductSettingsScreen(),
|
TaxRateScreenBuilder(),
|
||||||
ExpenseSettingsScreen.route: (context) =>
|
TaxRateViewScreen.route: (context) =>
|
||||||
ExpenseSettingsScreen(),
|
TaxRateViewScreen(),
|
||||||
TaskSettingsScreen.route: (context) =>
|
TaxRateEditScreen.route: (context) =>
|
||||||
TaskSettingsScreen(),
|
TaxRateEditScreen(),
|
||||||
ImportExportScreen.route: (context) =>
|
ProductSettingsScreen.route: (context) =>
|
||||||
ImportExportScreen(),
|
ProductSettingsScreen(),
|
||||||
DeviceSettingsScreen.route: (context) =>
|
ExpenseSettingsScreen.route: (context) =>
|
||||||
DeviceSettingsScreen(),
|
ExpenseSettingsScreen(),
|
||||||
AccountManagementScreen.route: (context) =>
|
TaskSettingsScreen.route: (context) =>
|
||||||
AccountManagementScreen(),
|
TaskSettingsScreen(),
|
||||||
CustomFieldsScreen.route: (context) =>
|
ImportExportScreen.route: (context) =>
|
||||||
CustomFieldsScreen(),
|
ImportExportScreen(),
|
||||||
GeneratedNumbersScreen.route: (context) =>
|
DeviceSettingsScreen.route: (context) =>
|
||||||
GeneratedNumbersScreen(),
|
DeviceSettingsScreen(),
|
||||||
WorkflowSettingsScreen.route: (context) =>
|
AccountManagementScreen.route: (context) =>
|
||||||
WorkflowSettingsScreen(),
|
AccountManagementScreen(),
|
||||||
InvoiceDesignScreen.route: (context) =>
|
CustomFieldsScreen.route: (context) =>
|
||||||
InvoiceDesignScreen(),
|
CustomFieldsScreen(),
|
||||||
ClientPortalScreen.route: (context) =>
|
GeneratedNumbersScreen.route: (context) =>
|
||||||
ClientPortalScreen(),
|
GeneratedNumbersScreen(),
|
||||||
BuyNowButtonsScreen.route: (context) =>
|
WorkflowSettingsScreen.route: (context) =>
|
||||||
BuyNowButtonsScreen(),
|
WorkflowSettingsScreen(),
|
||||||
EmailSettingsScreen.route: (context) =>
|
InvoiceDesignScreen.route: (context) =>
|
||||||
EmailSettingsScreen(),
|
InvoiceDesignScreen(),
|
||||||
TemplatesAndRemindersScreen.route: (context) =>
|
ClientPortalScreen.route: (context) =>
|
||||||
TemplatesAndRemindersScreen(),
|
ClientPortalScreen(),
|
||||||
CreditCardsAndBanksScreen.route: (context) =>
|
BuyNowButtonsScreen.route: (context) =>
|
||||||
CreditCardsAndBanksScreen(),
|
BuyNowButtonsScreen(),
|
||||||
DataVisualizationsScreen.route: (context) =>
|
EmailSettingsScreen.route: (context) =>
|
||||||
DataVisualizationsScreen(),
|
EmailSettingsScreen(),
|
||||||
}
|
TemplatesAndRemindersScreen.route: (context) =>
|
||||||
: {},
|
TemplatesAndRemindersScreen(),
|
||||||
|
CreditCardsAndBanksScreen.route: (context) =>
|
||||||
|
CreditCardsAndBanksScreen(),
|
||||||
|
DataVisualizationsScreen.route: (context) =>
|
||||||
|
DataVisualizationsScreen(),
|
||||||
|
}
|
||||||
|
: {},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
||||||
requireAuthentication: false,
|
requireAuthentication: false,
|
||||||
colorTheme: kColorThemeLight,
|
colorTheme: kColorThemeLight,
|
||||||
isFilterVisible: false,
|
isFilterVisible: false,
|
||||||
|
textScaleFactor: 1,
|
||||||
longPressSelectionIsDefault: true,
|
longPressSelectionIsDefault: true,
|
||||||
tapSelectedToEdit: false,
|
tapSelectedToEdit: false,
|
||||||
hideDesktopWarning: false,
|
hideDesktopWarning: false,
|
||||||
|
|
@ -44,6 +45,11 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
||||||
|
|
||||||
PrefState._();
|
PrefState._();
|
||||||
|
|
||||||
|
static const TEXT_SCALING_NORMAL = 1.0;
|
||||||
|
static const TEXT_SCALING_LARGE = 1.2;
|
||||||
|
static const TEXT_SCALING_LARGER = 1.4;
|
||||||
|
static const TEXT_SCALING_LARGEST = 1.6;
|
||||||
|
|
||||||
static const THEME_SIDEBAR_ACTIVE_BACKGROUND_COLOR =
|
static const THEME_SIDEBAR_ACTIVE_BACKGROUND_COLOR =
|
||||||
'sidebar_active_background_color';
|
'sidebar_active_background_color';
|
||||||
static const THEME_SIDEBAR_ACTIVE_FONT_COLOR = 'sidebar_active_font_color';
|
static const THEME_SIDEBAR_ACTIVE_FONT_COLOR = 'sidebar_active_font_color';
|
||||||
|
|
@ -123,6 +129,8 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
||||||
|
|
||||||
bool get hideDesktopWarning;
|
bool get hideDesktopWarning;
|
||||||
|
|
||||||
|
double get textScaleFactor;
|
||||||
|
|
||||||
BuiltMap<EntityType, PrefStateSortField> get sortFields;
|
BuiltMap<EntityType, PrefStateSortField> get sortFields;
|
||||||
|
|
||||||
ColorTheme get colorThemeModel => colorThemesMap.containsKey(colorTheme)
|
ColorTheme get colorThemeModel => colorThemesMap.containsKey(colorTheme)
|
||||||
|
|
@ -190,6 +198,7 @@ abstract class PrefState implements Built<PrefState, PrefStateBuilder> {
|
||||||
..persistData = false
|
..persistData = false
|
||||||
..persistUI = true
|
..persistUI = true
|
||||||
..showPdfPreview = true
|
..showPdfPreview = true
|
||||||
|
..textScaleFactor = 1
|
||||||
..colorTheme =
|
..colorTheme =
|
||||||
builder.enableDarkMode == true ? kColorThemeLight : kColorThemeLight;
|
builder.enableDarkMode == true ? kColorThemeLight : kColorThemeLight;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,9 @@ class _$PrefStateSerializer implements StructuredSerializer<PrefState> {
|
||||||
'hideDesktopWarning',
|
'hideDesktopWarning',
|
||||||
serializers.serialize(object.hideDesktopWarning,
|
serializers.serialize(object.hideDesktopWarning,
|
||||||
specifiedType: const FullType(bool)),
|
specifiedType: const FullType(bool)),
|
||||||
|
'textScaleFactor',
|
||||||
|
serializers.serialize(object.textScaleFactor,
|
||||||
|
specifiedType: const FullType(double)),
|
||||||
'sortFields',
|
'sortFields',
|
||||||
serializers.serialize(object.sortFields,
|
serializers.serialize(object.sortFields,
|
||||||
specifiedType: const FullType(BuiltMap, const [
|
specifiedType: const FullType(BuiltMap, const [
|
||||||
|
|
@ -292,6 +295,10 @@ class _$PrefStateSerializer implements StructuredSerializer<PrefState> {
|
||||||
result.hideDesktopWarning = serializers.deserialize(value,
|
result.hideDesktopWarning = serializers.deserialize(value,
|
||||||
specifiedType: const FullType(bool)) as bool;
|
specifiedType: const FullType(bool)) as bool;
|
||||||
break;
|
break;
|
||||||
|
case 'textScaleFactor':
|
||||||
|
result.textScaleFactor = serializers.deserialize(value,
|
||||||
|
specifiedType: const FullType(double)) as double;
|
||||||
|
break;
|
||||||
case 'sortFields':
|
case 'sortFields':
|
||||||
result.sortFields.replace(serializers.deserialize(value,
|
result.sortFields.replace(serializers.deserialize(value,
|
||||||
specifiedType: const FullType(BuiltMap, const [
|
specifiedType: const FullType(BuiltMap, const [
|
||||||
|
|
@ -579,6 +586,8 @@ class _$PrefState extends PrefState {
|
||||||
@override
|
@override
|
||||||
final bool hideDesktopWarning;
|
final bool hideDesktopWarning;
|
||||||
@override
|
@override
|
||||||
|
final double textScaleFactor;
|
||||||
|
@override
|
||||||
final BuiltMap<EntityType, PrefStateSortField> sortFields;
|
final BuiltMap<EntityType, PrefStateSortField> sortFields;
|
||||||
@override
|
@override
|
||||||
final BuiltMap<String, CompanyPrefState> companyPrefs;
|
final BuiltMap<String, CompanyPrefState> companyPrefs;
|
||||||
|
|
@ -608,6 +617,7 @@ class _$PrefState extends PrefState {
|
||||||
this.rowsPerPage,
|
this.rowsPerPage,
|
||||||
this.colorTheme,
|
this.colorTheme,
|
||||||
this.hideDesktopWarning,
|
this.hideDesktopWarning,
|
||||||
|
this.textScaleFactor,
|
||||||
this.sortFields,
|
this.sortFields,
|
||||||
this.companyPrefs})
|
this.companyPrefs})
|
||||||
: super._() {
|
: super._() {
|
||||||
|
|
@ -651,6 +661,8 @@ class _$PrefState extends PrefState {
|
||||||
colorTheme, 'PrefState', 'colorTheme');
|
colorTheme, 'PrefState', 'colorTheme');
|
||||||
BuiltValueNullFieldError.checkNotNull(
|
BuiltValueNullFieldError.checkNotNull(
|
||||||
hideDesktopWarning, 'PrefState', 'hideDesktopWarning');
|
hideDesktopWarning, 'PrefState', 'hideDesktopWarning');
|
||||||
|
BuiltValueNullFieldError.checkNotNull(
|
||||||
|
textScaleFactor, 'PrefState', 'textScaleFactor');
|
||||||
BuiltValueNullFieldError.checkNotNull(
|
BuiltValueNullFieldError.checkNotNull(
|
||||||
sortFields, 'PrefState', 'sortFields');
|
sortFields, 'PrefState', 'sortFields');
|
||||||
BuiltValueNullFieldError.checkNotNull(
|
BuiltValueNullFieldError.checkNotNull(
|
||||||
|
|
@ -689,6 +701,7 @@ class _$PrefState extends PrefState {
|
||||||
rowsPerPage == other.rowsPerPage &&
|
rowsPerPage == other.rowsPerPage &&
|
||||||
colorTheme == other.colorTheme &&
|
colorTheme == other.colorTheme &&
|
||||||
hideDesktopWarning == other.hideDesktopWarning &&
|
hideDesktopWarning == other.hideDesktopWarning &&
|
||||||
|
textScaleFactor == other.textScaleFactor &&
|
||||||
sortFields == other.sortFields &&
|
sortFields == other.sortFields &&
|
||||||
companyPrefs == other.companyPrefs;
|
companyPrefs == other.companyPrefs;
|
||||||
}
|
}
|
||||||
|
|
@ -714,24 +727,24 @@ class _$PrefState extends PrefState {
|
||||||
$jc(
|
$jc(
|
||||||
$jc(
|
$jc(
|
||||||
$jc(
|
$jc(
|
||||||
$jc($jc($jc($jc($jc(0, appLayout.hashCode), moduleLayout.hashCode), menuSidebarMode.hashCode), historySidebarMode.hashCode),
|
$jc($jc($jc($jc($jc($jc(0, appLayout.hashCode), moduleLayout.hashCode), menuSidebarMode.hashCode), historySidebarMode.hashCode), useSidebarEditor.hashCode),
|
||||||
useSidebarEditor.hashCode),
|
customColors.hashCode),
|
||||||
customColors.hashCode),
|
isPreviewVisible.hashCode),
|
||||||
isPreviewVisible.hashCode),
|
isMenuVisible.hashCode),
|
||||||
isMenuVisible.hashCode),
|
showKanban.hashCode),
|
||||||
showKanban.hashCode),
|
showPdfPreview.hashCode),
|
||||||
showPdfPreview.hashCode),
|
isHistoryVisible.hashCode),
|
||||||
isHistoryVisible.hashCode),
|
enableDarkMode.hashCode),
|
||||||
enableDarkMode.hashCode),
|
isFilterVisible.hashCode),
|
||||||
isFilterVisible.hashCode),
|
persistData.hashCode),
|
||||||
persistData.hashCode),
|
persistUI.hashCode),
|
||||||
persistUI.hashCode),
|
longPressSelectionIsDefault.hashCode),
|
||||||
longPressSelectionIsDefault.hashCode),
|
requireAuthentication.hashCode),
|
||||||
requireAuthentication.hashCode),
|
tapSelectedToEdit.hashCode),
|
||||||
tapSelectedToEdit.hashCode),
|
rowsPerPage.hashCode),
|
||||||
rowsPerPage.hashCode),
|
colorTheme.hashCode),
|
||||||
colorTheme.hashCode),
|
hideDesktopWarning.hashCode),
|
||||||
hideDesktopWarning.hashCode),
|
textScaleFactor.hashCode),
|
||||||
sortFields.hashCode),
|
sortFields.hashCode),
|
||||||
companyPrefs.hashCode));
|
companyPrefs.hashCode));
|
||||||
}
|
}
|
||||||
|
|
@ -760,6 +773,7 @@ class _$PrefState extends PrefState {
|
||||||
..add('rowsPerPage', rowsPerPage)
|
..add('rowsPerPage', rowsPerPage)
|
||||||
..add('colorTheme', colorTheme)
|
..add('colorTheme', colorTheme)
|
||||||
..add('hideDesktopWarning', hideDesktopWarning)
|
..add('hideDesktopWarning', hideDesktopWarning)
|
||||||
|
..add('textScaleFactor', textScaleFactor)
|
||||||
..add('sortFields', sortFields)
|
..add('sortFields', sortFields)
|
||||||
..add('companyPrefs', companyPrefs))
|
..add('companyPrefs', companyPrefs))
|
||||||
.toString();
|
.toString();
|
||||||
|
|
@ -870,6 +884,11 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
||||||
set hideDesktopWarning(bool hideDesktopWarning) =>
|
set hideDesktopWarning(bool hideDesktopWarning) =>
|
||||||
_$this._hideDesktopWarning = hideDesktopWarning;
|
_$this._hideDesktopWarning = hideDesktopWarning;
|
||||||
|
|
||||||
|
double _textScaleFactor;
|
||||||
|
double get textScaleFactor => _$this._textScaleFactor;
|
||||||
|
set textScaleFactor(double textScaleFactor) =>
|
||||||
|
_$this._textScaleFactor = textScaleFactor;
|
||||||
|
|
||||||
MapBuilder<EntityType, PrefStateSortField> _sortFields;
|
MapBuilder<EntityType, PrefStateSortField> _sortFields;
|
||||||
MapBuilder<EntityType, PrefStateSortField> get sortFields =>
|
MapBuilder<EntityType, PrefStateSortField> get sortFields =>
|
||||||
_$this._sortFields ??= new MapBuilder<EntityType, PrefStateSortField>();
|
_$this._sortFields ??= new MapBuilder<EntityType, PrefStateSortField>();
|
||||||
|
|
@ -910,6 +929,7 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
||||||
_rowsPerPage = $v.rowsPerPage;
|
_rowsPerPage = $v.rowsPerPage;
|
||||||
_colorTheme = $v.colorTheme;
|
_colorTheme = $v.colorTheme;
|
||||||
_hideDesktopWarning = $v.hideDesktopWarning;
|
_hideDesktopWarning = $v.hideDesktopWarning;
|
||||||
|
_textScaleFactor = $v.textScaleFactor;
|
||||||
_sortFields = $v.sortFields.toBuilder();
|
_sortFields = $v.sortFields.toBuilder();
|
||||||
_companyPrefs = $v.companyPrefs.toBuilder();
|
_companyPrefs = $v.companyPrefs.toBuilder();
|
||||||
_$v = null;
|
_$v = null;
|
||||||
|
|
@ -963,6 +983,7 @@ class PrefStateBuilder implements Builder<PrefState, PrefStateBuilder> {
|
||||||
rowsPerPage: BuiltValueNullFieldError.checkNotNull(rowsPerPage, 'PrefState', 'rowsPerPage'),
|
rowsPerPage: BuiltValueNullFieldError.checkNotNull(rowsPerPage, 'PrefState', 'rowsPerPage'),
|
||||||
colorTheme: BuiltValueNullFieldError.checkNotNull(colorTheme, 'PrefState', 'colorTheme'),
|
colorTheme: BuiltValueNullFieldError.checkNotNull(colorTheme, 'PrefState', 'colorTheme'),
|
||||||
hideDesktopWarning: BuiltValueNullFieldError.checkNotNull(hideDesktopWarning, 'PrefState', 'hideDesktopWarning'),
|
hideDesktopWarning: BuiltValueNullFieldError.checkNotNull(hideDesktopWarning, 'PrefState', 'hideDesktopWarning'),
|
||||||
|
textScaleFactor: BuiltValueNullFieldError.checkNotNull(textScaleFactor, 'PrefState', 'textScaleFactor'),
|
||||||
sortFields: sortFields.build(),
|
sortFields: sortFields.build(),
|
||||||
companyPrefs: companyPrefs.build());
|
companyPrefs: companyPrefs.build());
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue