162 lines
5.0 KiB
Dart
162 lines
5.0 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|
import 'package:package_info/package_info.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:fcs/model/language_model.dart';
|
|
import 'package:fcs/widget/banner.dart';
|
|
import 'package:fcs/widget/localization/transalation.dart';
|
|
import 'package:fcs/widget/offline_redirect.dart';
|
|
import 'package:fcs/widget/products.dart';
|
|
|
|
import 'contact.dart';
|
|
import 'login_page.dart';
|
|
import 'manual/manual_page.dart';
|
|
|
|
class WelcomePage extends StatefulWidget {
|
|
@override
|
|
_WelcomePageState createState() => _WelcomePageState();
|
|
}
|
|
|
|
class _WelcomePageState extends State<WelcomePage> {
|
|
String version = "";
|
|
List<bool> _selection = List.generate(2, (_) => false);
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_loadVersion();
|
|
var languageModel = Provider.of<LanguageModel>(context, listen: false);
|
|
languageModel.isEng ? _selection[0] = true : _selection[1] = true;
|
|
}
|
|
|
|
_loadVersion() async {
|
|
var version = await getVersionNumber();
|
|
setState(() {
|
|
this.version = version;
|
|
});
|
|
}
|
|
|
|
Future<String> getVersionNumber() async {
|
|
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
|
return "v${packageInfo.version}+${packageInfo.buildNumber}";
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
var languageModel = Provider.of<LanguageModel>(context);
|
|
|
|
var toggleButtons = ToggleButtons(
|
|
constraints: BoxConstraints(minWidth: 25.0, minHeight: 25.0),
|
|
children: <Widget>[
|
|
Padding(
|
|
padding: const EdgeInsets.only(right: 8.0),
|
|
child: Container(
|
|
decoration: languageModel.isEng
|
|
? BoxDecoration(
|
|
border: Border.all(color: Colors.blueAccent, width: 1))
|
|
: null,
|
|
child: Image.asset(
|
|
"assets/eng_flag.png",
|
|
width: 23,
|
|
),
|
|
),
|
|
),
|
|
Container(
|
|
decoration: !languageModel.isEng
|
|
? BoxDecoration(
|
|
border: Border.all(color: Colors.blueAccent, width: 1))
|
|
: null,
|
|
child: Image.asset(
|
|
"assets/myan_flag.png",
|
|
width: 23,
|
|
),
|
|
),
|
|
],
|
|
renderBorder: false,
|
|
isSelected: _selection,
|
|
fillColor: Colors.white,
|
|
onPressed: (int index) {
|
|
languageModel.saveLanguage(Translation().supportedLanguages[index]);
|
|
setState(() {
|
|
for (int buttonIndex = 0;
|
|
buttonIndex < _selection.length;
|
|
buttonIndex++) {
|
|
if (buttonIndex == index) {
|
|
_selection[buttonIndex] = true;
|
|
} else {
|
|
_selection[buttonIndex] = false;
|
|
}
|
|
}
|
|
});
|
|
},
|
|
);
|
|
|
|
return OfflineRedirect(
|
|
child: FlavorBanner(
|
|
child: Scaffold(
|
|
backgroundColor: Colors.white,
|
|
appBar: AppBar(
|
|
backgroundColor: Colors.white,
|
|
iconTheme: IconThemeData(
|
|
color: Colors.grey,
|
|
),
|
|
elevation: 0,
|
|
title: Image(
|
|
height: 30,
|
|
fit: BoxFit.scaleDown,
|
|
image: new AssetImage('assets/img/logo.png')),
|
|
actions: <Widget>[
|
|
IconButton(
|
|
icon: Image.asset(
|
|
"assets/manual.png",
|
|
width: 30,
|
|
height: 30,
|
|
color: Colors.black,
|
|
),
|
|
onPressed: () => Navigator.of(context)
|
|
.push(MaterialPageRoute(builder: (_) => ManualPage())),
|
|
),
|
|
IconButton(
|
|
icon: Icon(
|
|
FontAwesomeIcons.phone,
|
|
color: Colors.black,
|
|
size: 20,
|
|
),
|
|
onPressed: () => Navigator.of(context)
|
|
.push(MaterialPageRoute(builder: (_) => Contact())),
|
|
),
|
|
IconButton(
|
|
icon: Icon(
|
|
FontAwesomeIcons.signInAlt,
|
|
color: Colors.black,
|
|
size: 20,
|
|
),
|
|
onPressed: () => Navigator.of(context)
|
|
.push(MaterialPageRoute(builder: (_) => LoginPage())),
|
|
),
|
|
],
|
|
),
|
|
body: ListView(
|
|
children: <Widget>[
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
children: <Widget>[
|
|
Padding(
|
|
padding: const EdgeInsets.only(right: 8.0),
|
|
child: toggleButtons,
|
|
),
|
|
],
|
|
),
|
|
Padding(
|
|
padding: const EdgeInsets.only(top: 5),
|
|
child: ProductsWidget(isWelcomePage: false),
|
|
),
|
|
SizedBox(height: 30,),
|
|
Center(child: Text("${this.version}")),
|
|
],
|
|
)),
|
|
),
|
|
);
|
|
}
|
|
}
|