106 lines
3.4 KiB
Dart
106 lines
3.4 KiB
Dart
import 'package:aman_kassa_flutter/core/locator.dart';
|
||
import 'package:aman_kassa_flutter/core/logger.dart';
|
||
import 'package:aman_kassa_flutter/core/models/choice.dart';
|
||
import 'package:aman_kassa_flutter/core/services/DataService.dart';
|
||
import 'package:aman_kassa_flutter/redux/actions/user_actions.dart';
|
||
import 'package:aman_kassa_flutter/redux/constants/setting_const.dart';
|
||
import 'package:aman_kassa_flutter/redux/state/setting_state.dart';
|
||
import 'package:aman_kassa_flutter/redux/store.dart';
|
||
import 'package:aman_kassa_flutter/shared/app_colors.dart';
|
||
import 'package:aman_kassa_flutter/views/home/components/header_title.dart';
|
||
import 'package:aman_kassa_flutter/widgets/loader/Dialogs.dart';
|
||
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter_redux/flutter_redux.dart';
|
||
import 'package:logger/logger.dart';
|
||
|
||
import './tabs/KassaTab.dart';
|
||
import './tabs/AdditionalTab.dart';
|
||
import './tabs/CalculatorTab.dart';
|
||
|
||
import './components/popup_menu.dart';
|
||
import 'components/bottom_bar.dart';
|
||
|
||
const List<Choice> choices = const <Choice>[
|
||
const Choice(
|
||
title: 'Обновить номенклатуру', icon: Icons.update, command: 'update'),
|
||
const Choice(title: 'Помощь', icon: Icons.help, command: 'help'),
|
||
const Choice(title: 'О Программе', icon: Icons.info_outline, command: 'info'),
|
||
const Choice(title: 'Язык', icon: Icons.language, command: 'language'),
|
||
const Choice(title: 'Выйти', icon: Icons.exit_to_app, command: 'exit')
|
||
];
|
||
|
||
class HomeView extends StatefulWidget {
|
||
@override
|
||
_HomeViewState createState() => _HomeViewState();
|
||
}
|
||
|
||
class _HomeViewState extends State<HomeView> {
|
||
Logger log = getLogger('HomeView');
|
||
PageController pageController;
|
||
int selectedTabIndex;
|
||
DataService _dataService = locator<DataService>();
|
||
final GlobalKey<State> _keyLoader = new GlobalKey<State>();
|
||
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
selectedTabIndex = 0;
|
||
pageController = new PageController(initialPage: selectedTabIndex);
|
||
Redux.store.dispatch(checkSmena);
|
||
}
|
||
|
||
@override
|
||
void dispose() {
|
||
pageController.dispose();
|
||
super.dispose();
|
||
}
|
||
|
||
void _onSelectChoice(Choice choice) async {
|
||
if (choice.command == 'exit') {
|
||
|
||
} else if (choice.command == 'update') {
|
||
Dialogs.showLoadingDialog(context, _keyLoader);
|
||
bool result = await _dataService.getDataFromServer(Redux.store.state.userState.user);
|
||
log.i('result: $result');
|
||
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||
}
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
return Scaffold(
|
||
appBar: AppBar(
|
||
title: HeaderTitle(),
|
||
actions: <Widget>[
|
||
PopupMenu(
|
||
onSelectChoice: _onSelectChoice,
|
||
)
|
||
],
|
||
backgroundColor: fillColor,
|
||
),
|
||
body:StoreConnector<AppState, SettingState>(
|
||
converter: (store) => store.state.settingState,
|
||
builder: (context, vm) {
|
||
return PageView(
|
||
onPageChanged: (index) {
|
||
setState(() {
|
||
selectedTabIndex = index;
|
||
});
|
||
},
|
||
controller: pageController,
|
||
children: <Widget>[
|
||
vm.mode == SettingModeKassa ? KassaTab(0) : CalculatorTab(0),
|
||
AdditionalTab(1),
|
||
],
|
||
);
|
||
}
|
||
),
|
||
bottomNavigationBar: BottomBar(
|
||
pageController: pageController,
|
||
selectedTabIndex: selectedTabIndex,
|
||
),
|
||
);
|
||
}
|
||
}
|