97 lines
2.8 KiB
Dart
97 lines
2.8 KiB
Dart
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_wisetronic/models/gallery.dart';
|
|
import '../widgets/general/bottom_nav.dart';
|
|
import '../widgets/general/index_carousel.dart';
|
|
import '../widgets/general/index_main_content_1.dart';
|
|
import '../widgets/general/index_main_content_2.dart';
|
|
import '../widgets/general/index_main_content_3.dart';
|
|
import '../events/eventbus.dart';
|
|
import '../events/events.dart';
|
|
import '../generated/l10n.dart';
|
|
import '../store/actions.dart';
|
|
import '../store/store.dart';
|
|
import '../utils/http_util.dart';
|
|
import '../utils/double_back_to_close_app.dart';
|
|
import '../widgets/general/navigationbar.dart';
|
|
import '../widgets/mobile/mobile_navigation_drawer.dart';
|
|
import 'package:responsive_builder/responsive_builder.dart';
|
|
|
|
class Home extends StatefulWidget {
|
|
Locale locale;
|
|
final String title;
|
|
|
|
Home(Locale locale, {Key key, this.title}) :
|
|
locale = locale ?? store.state.locale;
|
|
|
|
@override
|
|
State<StatefulWidget> createState() {
|
|
return HomeState();
|
|
}
|
|
|
|
}
|
|
|
|
class HomeState extends State<Home> {
|
|
final _scaffoldKey = GlobalKey<ScaffoldState>();
|
|
List<Gallery> galleries = [];
|
|
String content1Message = '';
|
|
Map<String, dynamic> content2;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
store.dispatch(UpdateContext(context));
|
|
|
|
return ResponsiveBuilder(
|
|
builder: (context, sizingInformation) =>
|
|
Scaffold(
|
|
key: _scaffoldKey,
|
|
appBar: NavigationBar(),
|
|
drawer: sizingInformation.deviceScreenType == DeviceScreenType.mobile ? MobileNavigationDrawer() : null,
|
|
body: DoubleBackToCloseApp(
|
|
snackBar: SnackBar(
|
|
content: Text(S.of(context).tap_back_again_to_exit),
|
|
),
|
|
child: SingleChildScrollView(
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
IndexCarousel(galleries),
|
|
IndexMainContent1(content1Message),
|
|
IndexMainContent2(content2),
|
|
IndexMainContent3(content2),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
bottomNavigationBar: BottomNav(),
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_loadData();
|
|
eventBus.on<OpenDrawer>().listen((event) {
|
|
if (mounted) {
|
|
_scaffoldKey.currentState.openDrawer();
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
void _loadData() {
|
|
HttpUtil.httpGet('v1/get-wisetronic-index-carousel')
|
|
.then((value) {
|
|
print('$value');
|
|
if (mounted) {
|
|
setState(() {
|
|
galleries = (value['index_carousel'] as List).map((i) => Gallery.fromJson(i)).toList();
|
|
content1Message = value['content']['index_content_1'];
|
|
content2 = value['content']['index_content_2'];
|
|
});
|
|
}
|
|
});
|
|
}
|
|
} |