Files
fcs/lib/pages/welcome_page.dart

162 lines
5.0 KiB
Dart
Raw Normal View History

2020-05-29 07:45:27 +06:30
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}")),
],
)),
),
);
}
}