add structure
This commit is contained in:
161
lib/pages/welcome_page.dart
Normal file
161
lib/pages/welcome_page.dart
Normal file
@@ -0,0 +1,161 @@
|
||||
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}")),
|
||||
],
|
||||
)),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user