This commit is contained in:
Hillel Coren 2019-10-12 21:49:33 +03:00
parent dea3e6cba4
commit 3bd9237801
2 changed files with 85 additions and 48 deletions

View File

@ -134,9 +134,7 @@ class MainScreen extends StatelessWidget {
viewWidget: ExpenseViewScreen(), viewWidget: ExpenseViewScreen(),
editWidget: ExpenseEditScreen(), editWidget: ExpenseEditScreen(),
), ),
// TODO profile/time to see if this optimization helps SettingsScreens(),
mainRoute == 'settings' ? SettingsScreens() : SizedBox(),
//SettingsScreens(),
], ],
), ),
), ),
@ -152,13 +150,79 @@ class SettingsScreens extends StatelessWidget {
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final state = store.state; final state = store.state;
final uiState = state.uiState; final uiState = state.uiState;
final subRoute = uiState.subRoute;
final index = subRoute.isEmpty
? kSettingsSections.length
: kSettingsSections.indexOf(subRoute);
return Row( Widget screen = BlankScreen();
children: <Widget>[
switch (uiState.subRoute) {
case kSettingsCompanyDetails:
screen = CompanyDetailsScreen();
break;
case kSettingsUserDetails:
screen = UserDetailsScreen();
break;
case kSettingsLocalization:
screen = LocalizationScreen();
break;
case kSettingsOnlinePayments:
screen = CompanyGatewayScreen();
break;
case kSettingsOnlinePaymentsView:
screen = CompanyGatewayViewScreen();
break;
case kSettingsOnlinePaymentsEdit:
screen = CompanyGatewayEditScreen();
break;
case kSettingsTaxRates:
screen = TaxRatesScreen();
break;
case kSettingsProducts:
screen = ProductSettingsScreen();
break;
case kSettingsNotifications:
screen = NotificationsSettingsScreen();
break;
case kSettingsImportExport:
screen = ImportExportScreen();
break;
case kSettingsDeviceSettings:
screen = DeviceSettingsScreen();
break;
case kSettingsGroupSettings:
screen = GroupSettingsScreen();
break;
case kSettingsGroupSettingsView:
screen = GroupViewScreen();
break;
case kSettingsGroupSettingsEdit:
screen = GroupEditScreen();
break;
case kSettingsInvoiceSettings:
screen = InvoiceSettingsScreen();
break;
case kSettingsInvoiceDesign:
screen = InvoiceDesignScreen();
break;
case kSettingsClientPortal:
screen = ClientPortalScreen();
break;
case kSettingsBuyNowButtons:
screen = BuyNowButtonsScreen();
break;
case kSettingsEmailSettings:
screen = EmailSettingsScreen();
break;
case kSettingsTemplatesAndReminders:
screen = TemplatesAndRemindersScreen();
break;
case kSettingsCreditCardsAndBanks:
screen = CreditCardsAndBanksScreen();
break;
case kSettingsDataVisualizations:
screen = DataVisualizationsScreen();
break;
}
return Row(children: <Widget>[
Expanded( Expanded(
child: SettingsScreen(), child: SettingsScreen(),
flex: 2, flex: 2,
@ -166,37 +230,9 @@ class SettingsScreens extends StatelessWidget {
VerticalDivider(width: isDarkMode(context) ? 1 : .5), VerticalDivider(width: isDarkMode(context) ? 1 : .5),
Expanded( Expanded(
flex: 3, flex: 3,
child: IndexedStack( child: screen,
index: index, )
children: <Widget>[ ]);
CompanyDetailsScreen(),
UserDetailsScreen(),
LocalizationScreen(),
CompanyGatewayScreen(),
CompanyGatewayViewScreen(),
CompanyGatewayEditScreen(),
TaxRatesScreen(),
ProductSettingsScreen(),
NotificationsSettingsScreen(),
ImportExportScreen(),
DeviceSettingsScreen(),
GroupSettingsScreen(),
GroupViewScreen(),
GroupEditScreen(),
InvoiceSettingsScreen(),
InvoiceDesignScreen(),
ClientPortalScreen(),
BuyNowButtonsScreen(),
EmailSettingsScreen(),
TemplatesAndRemindersScreen(),
CreditCardsAndBanksScreen(),
DataVisualizationsScreen(),
BlankScreen(),
],
),
),
],
);
} }
} }
@ -247,6 +283,7 @@ class EntityScreens extends StatelessWidget {
class BlankScreen extends StatelessWidget { class BlankScreen extends StatelessWidget {
const BlankScreen([this.message]); const BlankScreen([this.message]);
final String message; final String message;
@override @override

View File

@ -15,7 +15,7 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
class CompanyDetailsScreen extends StatelessWidget { class CompanyDetailsScreen extends StatelessWidget {
const CompanyDetailsScreen({Key key}) : super(key: key); const CompanyDetailsScreen({Key key}) : super(key: key);
static const String route = '/settings/$kSettingsCompanyDetails'; static const String route = '/$kSettings/$kSettingsCompanyDetails';
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {