This commit is contained in:
Hillel Coren 2019-11-12 22:28:57 +02:00
parent a78e824cfe
commit 83ec81cf0c
8 changed files with 98 additions and 18 deletions

View File

@ -0,0 +1,26 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/app/history_drawer_vm.dart';
class HistoryDrawer extends StatelessWidget {
const HistoryDrawer({
Key key,
@required this.viewModel,
}) : super(key: key);
final AppDrawerVM viewModel;
@override
Widget build(BuildContext context) {
return Drawer(
child: SafeArea(
child: Column(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Text('testk')
],
),
),
);
}
}

View File

@ -0,0 +1,49 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
import 'package:invoiceninja_flutter/ui/app/app_builder.dart';
import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/ui/app/history_drawer.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
class HistoryDrawerBuilder extends StatelessWidget {
const HistoryDrawerBuilder({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, AppDrawerVM>(
converter: AppDrawerVM.fromStore,
builder: (context, viewModel) {
return HistoryDrawer(viewModel: viewModel);
},
);
}
}
class AppDrawerVM {
AppDrawerVM({
@required this.companies,
@required this.selectedCompany,
@required this.user,
@required this.isLoading,
});
final List<CompanyEntity> companies;
final CompanyEntity selectedCompany;
final UserEntity user;
final bool isLoading;
static AppDrawerVM fromStore(Store<AppState> store) {
final AppState state = store.state;
return AppDrawerVM(
isLoading: state.isLoading,
companies: companiesSelector(state),
user: state.user,
selectedCompany: state.selectedCompany,
);
}
}

View File

@ -7,7 +7,7 @@ import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
import 'package:invoiceninja_flutter/ui/app/app_bottom_bar.dart'; import 'package:invoiceninja_flutter/ui/app/app_bottom_bar.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'app_drawer_vm.dart'; import 'menu_drawer_vm.dart';
class ListScaffold extends StatelessWidget { class ListScaffold extends StatelessWidget {
const ListScaffold({ const ListScaffold({
@ -44,7 +44,7 @@ class ListScaffold extends StatelessWidget {
return false; return false;
}, },
child: Scaffold( child: Scaffold(
drawer: isMobile(context) ? AppDrawerBuilder() : null, drawer: isMobile(context) ? MenuDrawerBuilder() : null,
//endDrawer: isMobile(context), //endDrawer: isMobile(context),
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: false, automaticallyImplyLeading: false,

View File

@ -4,7 +4,8 @@ import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
import 'package:invoiceninja_flutter/ui/app/app_drawer_vm.dart'; import 'package:invoiceninja_flutter/ui/app/history_drawer_vm.dart';
import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart';
import 'package:invoiceninja_flutter/ui/app/help_text.dart'; import 'package:invoiceninja_flutter/ui/app/help_text.dart';
import 'package:invoiceninja_flutter/ui/app/screen_imports.dart'; import 'package:invoiceninja_flutter/ui/app/screen_imports.dart';
import 'package:invoiceninja_flutter/ui/settings/settings_screen_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_screen_vm.dart';
@ -75,10 +76,14 @@ class MainScreen extends StatelessWidget {
return Row(children: <Widget>[ return Row(children: <Widget>[
if (uiState.isMenuVisible) ...[ if (uiState.isMenuVisible) ...[
AppDrawerBuilder(), MenuDrawerBuilder(),
VerticalDivider(width: isDarkMode(context) ? 1 : .5), VerticalDivider(width: isDarkMode(context) ? 1 : .5),
], ],
Expanded(child: screen) Expanded(child: screen),
if (uiState.isHistoryVisible) ...[
VerticalDivider(width: isDarkMode(context) ? 1 : .5),
HistoryDrawerBuilder(),
],
]); ]);
/* /*

View File

@ -16,7 +16,7 @@ import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart'; import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
import 'package:invoiceninja_flutter/redux/product/product_actions.dart'; import 'package:invoiceninja_flutter/redux/product/product_actions.dart';
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart'; import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
import 'package:invoiceninja_flutter/ui/app/app_drawer_vm.dart'; import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart';
import 'package:invoiceninja_flutter/ui/app/lists/selected_indicator.dart'; import 'package:invoiceninja_flutter/ui/app/lists/selected_indicator.dart';
import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/icons.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
@ -28,8 +28,8 @@ import 'package:url_launcher/url_launcher.dart';
// STARTER: import - do not remove comment // STARTER: import - do not remove comment
class AppDrawer extends StatelessWidget { class MenuDrawer extends StatelessWidget {
const AppDrawer({ const MenuDrawer({
Key key, Key key,
@required this.viewModel, @required this.viewModel,
}) : super(key: key); }) : super(key: key);

View File

@ -4,20 +4,20 @@ import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart'; import 'package:invoiceninja_flutter/redux/dashboard/dashboard_actions.dart';
import 'package:invoiceninja_flutter/ui/app/app_builder.dart'; import 'package:invoiceninja_flutter/ui/app/app_builder.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/ui/app/app_drawer.dart'; import 'package:invoiceninja_flutter/ui/app/menu_drawer.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart'; import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
class AppDrawerBuilder extends StatelessWidget { class MenuDrawerBuilder extends StatelessWidget {
const AppDrawerBuilder({Key key}) : super(key: key); const MenuDrawerBuilder({Key key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return StoreConnector<AppState, AppDrawerVM>( return StoreConnector<AppState, AppDrawerVM>(
converter: AppDrawerVM.fromStore, converter: AppDrawerVM.fromStore,
builder: (context, viewModel) { builder: (context, viewModel) {
return AppDrawer(viewModel: viewModel); return MenuDrawer(viewModel: viewModel);
}, },
); );
} }

View File

@ -11,7 +11,7 @@ import 'package:invoiceninja_flutter/redux/project/project_actions.dart';
import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart'; import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart';
import 'package:invoiceninja_flutter/redux/task/task_actions.dart'; import 'package:invoiceninja_flutter/redux/task/task_actions.dart';
import 'package:invoiceninja_flutter/redux/ui/ui_state.dart'; import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
import 'package:invoiceninja_flutter/ui/app/app_drawer_vm.dart'; import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart';
import 'package:invoiceninja_flutter/ui/app/list_filter.dart'; import 'package:invoiceninja_flutter/ui/app/list_filter.dart';
import 'package:invoiceninja_flutter/ui/app/list_filter_button.dart'; import 'package:invoiceninja_flutter/ui/app/list_filter_button.dart';
import 'package:invoiceninja_flutter/ui/dashboard/dashboard_activity.dart'; import 'package:invoiceninja_flutter/ui/dashboard/dashboard_activity.dart';
@ -57,7 +57,7 @@ class _DashboardViewState extends State<DashboardView>
return WillPopScope( return WillPopScope(
onWillPop: () async => true, onWillPop: () async => true,
child: Scaffold( child: Scaffold(
drawer: isMobile(context) ? AppDrawerBuilder() : null, drawer: isMobile(context) ? MenuDrawerBuilder() : null,
appBar: AppBar( appBar: AppBar(
leading: !isMobile(context) leading: !isMobile(context)
? IconButton( ? IconButton(

View File

@ -85,9 +85,9 @@ if [ ${action} = "init" ]; then
'./lib/redux/ui/ui_state.dart' './lib/redux/ui/ui_state.dart'
'./lib/ui/auth/login.dart' './lib/ui/auth/login.dart'
'./lib/ui/auth/login_vm.dart' './lib/ui/auth/login_vm.dart'
'./lib/ui/app/app_drawer.dart' './lib/ui/app/menu_drawer.dart'
'./lib/ui/app/init.dart' './lib/ui/app/init.dart'
'./lib/ui/app/app_drawer_vm.dart' './lib/ui/app/menu_drawer_vm.dart'
'./lib/ui/app/actions_menu_button.dart' './lib/ui/app/actions_menu_button.dart'
'./lib/ui/app/app_bottom_bar.dart' './lib/ui/app/app_bottom_bar.dart'
'./lib/ui/app/app_search.dart' './lib/ui/app/app_search.dart'
@ -336,7 +336,7 @@ else
comment="STARTER: import - do not remove comment" comment="STARTER: import - do not remove comment"
code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_actions.dart';${lineBreak}" code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_actions.dart';${lineBreak}"
sed -i -e "s/$comment/$comment${lineBreak}$code/g" ./lib/ui/app/app_drawer.dart sed -i -e "s/$comment/$comment${lineBreak}$code/g" ./lib/ui/app/menu_drawer.dart
comment="STARTER: menu - do not remove comment" comment="STARTER: menu - do not remove comment"
code="DrawerTile(${lineBreak}" code="DrawerTile(${lineBreak}"
@ -351,7 +351,7 @@ else
code="${code}${module_camel}: ${Module}Entity(), context: context));${lineBreak}" code="${code}${module_camel}: ${Module}Entity(), context: context));${lineBreak}"
code="${code}},${lineBreak}" code="${code}},${lineBreak}"
code="${code}),${lineBreak}" code="${code}),${lineBreak}"
sed -i -e "s/$comment/$comment${lineBreak}$code/g" ./lib/ui/app/app_drawer.dart sed -i -e "s/$comment/$comment${lineBreak}$code/g" ./lib/ui/app/menu_drawer.dart
comment="STARTER: import - do not remove comment" comment="STARTER: import - do not remove comment"
code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_state.dart';${lineBreak}" code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_state.dart';${lineBreak}"