This commit is contained in:
2020-12-23 00:43:59 -05:00
parent 0fd880f57b
commit 86c845b49b
54 changed files with 3638 additions and 107 deletions

View File

@@ -0,0 +1,113 @@
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import '../../models/gallery.dart';
import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dart';
class DesktopIndexCarousel extends StatefulWidget {
final List<Gallery> galleries;
const DesktopIndexCarousel(this.galleries, {Key key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return DesktopIndexCarouselState();
}
}
class DesktopIndexCarouselState extends State<DesktopIndexCarousel> {
int _current = 0;
double sideSpace = 0;
double mainSpace = 1200;
@override
Widget build(BuildContext context) {
return Stack(
children: [
Container(
padding: EdgeInsets.only(left: 0.0, right: 0.0, top: 0.0, bottom: 0.0),
child: CarouselSlider(
items: widget.galleries.map((i) {
return Builder(
builder: (BuildContext context) {
if (MediaQuery.of(context).size.width <= 1200) {
mainSpace = MediaQuery.of(context).size.width;
sideSpace = 0;
} else {
mainSpace = 1200;
sideSpace = (MediaQuery.of(context).size.width - 1200) / 2;
}
return Row(
children: [
Container(
width: sideSpace,
),
Container(
width: mainSpace,
// margin: EdgeInsets.symmetric(horizontal: 5.0),
child: GestureDetector(
child: Container(
child: Util.showImage(
'https:${i.image}',
fit: BoxFit.fitWidth,
),
),
onTap: () {
if (i.linkUrl != null && i.linkUrl.isNotEmpty) {
Util.openWebUrl(context, i.linkUrl);
}
},
),
),
Container(
width: sideSpace,
),
],
);
},
);
}).toList(),
options: CarouselOptions(
height: mainSpace / 2.0,
aspectRatio: 2/1,
initialPage: 0,
enableInfiniteScroll: true,
autoPlay: true,
autoPlayInterval: Duration(seconds: 5),
autoPlayCurve: Curves.fastOutSlowIn,
scrollDirection: Axis.horizontal,
viewportFraction: 1.0,
onPageChanged: (index, reason) {
setState(() {
_current = index;
});
}
),
),
),
Positioned(
bottom: 5,
right: sideSpace + 10,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: widget.galleries.map((i) {
int index = widget.galleries.indexOf(i);
return Container(
width: 8.0,
height: 8.0,
margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 2.0),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: _current == index
? Color.fromRGBO(0, 0, 0, 0.9)
: Color.fromRGBO(0, 0, 0, 0.4),
),
);
}).toList(),
),
),
],
);
}
}

View File

@@ -0,0 +1,60 @@
import 'package:flutter/material.dart';
import 'package:flutter_wisetronic/generated/l10n.dart';
class DesktopIndexMainContent1 extends StatefulWidget {
final String message;
const DesktopIndexMainContent1(this.message, {Key key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return DesktopIndexMainContent1State();
}
}
class DesktopIndexMainContent1State extends State<DesktopIndexMainContent1> {
double sideSpace = 0;
double mainSpace = 1200;
@override
Widget build(BuildContext context) {
if (MediaQuery.of(context).size.width <= 1200) {
mainSpace = MediaQuery.of(context).size.width;
sideSpace = 0;
} else {
mainSpace = 1200;
sideSpace = (MediaQuery.of(context).size.width - 1200) / 2;
}
return Row(
children: [
Container(
width: sideSpace,
),
Container(
width: mainSpace,
margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
padding: EdgeInsets.symmetric(vertical: 30.0, horizontal: 30.0),
child: Container(
child: Text(
widget.message,
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
),
decoration: BoxDecoration(
color: Colors.lightGreen,
borderRadius: BorderRadius.circular(10),
),
),
Container(
width: sideSpace,
),
],
);
}
}

View File

@@ -0,0 +1,247 @@
import 'package:flutter/material.dart';
import 'package:flutter_wisetronic/generated/l10n.dart';
import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dart';
class DesktopIndexMainContent2 extends StatefulWidget {
final Map<String, dynamic> content;
const DesktopIndexMainContent2(this.content, {Key key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return DesktopIndexMainContent2State();
}
}
class DesktopIndexMainContent2State extends State<DesktopIndexMainContent2> {
double sideSpace = 0;
double mainSpace = 1200;
@override
Widget build(BuildContext context) {
if (widget.content == null) {
return Container();
}
if (MediaQuery.of(context).size.width <= 1200) {
mainSpace = MediaQuery.of(context).size.width;
sideSpace = 0;
} else {
mainSpace = 1200;
sideSpace = (MediaQuery.of(context).size.width - 1200) / 2;
}
return Row(
children: [
Container(
width: sideSpace,
),
Container(
width: mainSpace,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: mainSpace / 2,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${widget.content['minipos']}',
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.blueGrey,
),
),
),
Container(
width: mainSpace / 2 - 100.0,
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${widget.content['point_of_sale_system_solution']}',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey,
),
overflow: TextOverflow.ellipsis,
),
),
],
),
),
Container(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Util.showImage(
'http:${widget.content['minipos_image']['image']}',
fit: BoxFit.fitWidth
),
),
_buildMiniPosFeatures(mainSpace / 2),
],
),
),
Container(
width: mainSpace / 2,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${widget.content['igoshow']}',
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.blueGrey,
),
),
),
Container(
width: mainSpace / 2 - 100.0,
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${widget.content['igoshow_solution']}',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey,
),
overflow: TextOverflow.ellipsis,
),
),
],
),
),
Container(
padding: EdgeInsets.symmetric(horizontal: 10.0),
child: Util.showImage(
'http:${widget.content['igoshow_image']['image']}',
fit: BoxFit.fitWidth
),
),
_buildiGoShowFeatures(mainSpace / 2),
],
),
),
],
),
),
Container(
width: sideSpace,
),
],
);
}
Widget _buildMiniPosFeatures(double width) {
Column col = Column(
children: [],
);
for (int i = 0; i < (widget.content['minipos_features'] as List).length; i++) {
col.children.add(Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 5.0),
child: Icon(
Icons.circle,
size: 10.0,
color: Colors.black87,
),
),
Container(
width: width - 40.0,
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${(widget.content['minipos_features'] as List)[i]}',
style: TextStyle(
color: Colors.black54,
),
),
),
],
));
}
col.children.add(
GestureDetector(
child: Container(
padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
child: Text(
S.of(context).learn_more,
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.bold,
),
),
),
),
);
return Container(
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 10.0),
child: col,
);
}
Widget _buildiGoShowFeatures(double width) {
Column col = Column(
children: [],
);
for (int i = 0; i < (widget.content['igoshow_features'] as List).length; i++) {
col.children.add(Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 5.0),
child: Icon(
Icons.circle,
size: 10.0,
color: Colors.black87,
),
),
Container(
width: width - 40.0,
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Text(
'${(widget.content['igoshow_features'] as List)[i]}',
style: TextStyle(
color: Colors.black54,
),
),
),
],
));
}
col.children.add(
GestureDetector(
child: Container(
padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 0.0),
child: Text(
S.of(context).learn_more,
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.bold,
),
),
),
),
);
return Container(
padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 10.0),
child: col,
);
}
}

View File

@@ -0,0 +1,179 @@
import 'package:flutter/material.dart';
import 'package:flutter_wisetronic/generated/l10n.dart';
import 'package:flutter_wisetronic/widgets/general/text_link.dart';
class DesktopIndexMainContent3 extends StatefulWidget {
final Map<String, dynamic> content;
const DesktopIndexMainContent3(this.content, {Key key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return DesktopIndexMainContent3State();
}
}
class DesktopIndexMainContent3State extends State<DesktopIndexMainContent3> {
double sideSpace = 0;
double mainSpace = 1200;
@override
Widget build(BuildContext context) {
if (widget.content == null) {
return Container();
}
if (MediaQuery.of(context).size.width <= 1200) {
mainSpace = MediaQuery.of(context).size.width;
sideSpace = 0;
} else {
mainSpace = 1200;
sideSpace = (MediaQuery.of(context).size.width - 1200) / 2;
}
return Container(
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.only(top: 20.0),
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 20.0),
decoration: BoxDecoration(
color: Color(0xff262626),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
child: Text(
S.of(context).information,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
color: Colors.white70,
),
),
),
Container(
child: Row(
children: [
TextLink(S.of(context).service_policy, '/service_policy', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).return_policy, '/return_policy', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).privacy_policy, '/privacy_policy', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).license_agreement, '/license_agreement', paddingVertical: 5.0, paddingHorizontal: 10.0,)
],
),
),
Container(
margin: EdgeInsets.only(top: 12.0),
child: Text(
S.of(context).support,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
color: Colors.white70,
),
),
),
Container(
child: Row(
children: [
TextLink(S.of(context).wiki, '/wiki', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).support_ticket, '/support_ticket', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).contact_us, '/contact_us', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).about_us, '/about_us', paddingVertical: 5.0, paddingHorizontal: 10.0,),
TextLink(S.of(context).renew_license, '/renew_license', paddingVertical: 5.0, paddingHorizontal: 10.0,)
],
),
),
Container(
margin: EdgeInsets.only(top: 12.0),
child: Text(
S.of(context).developer_of,
style: TextStyle(
fontSize: 16.0,
fontWeight: FontWeight.bold,
color: Colors.white70,
),
),
),
Container(
child: Row(
children: [
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe800,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe801,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe802,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe803,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe804,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
Container(
padding: EdgeInsets.all(10.0),
child: Icon(
IconData(
0xe805,
fontFamily: 'company',
fontPackage: null
),
color: Colors.white24,
size: 48.0,
),
),
],
),
),
],
),
);
}
}

View File

@@ -0,0 +1,99 @@
import 'package:flutter/material.dart';
import 'package:flutter_wisetronic/generated/l10n.dart';
import 'package:flutter_wisetronic/widgets/general/navigationbar_logo.dart';
import 'package:flutter_wisetronic/widgets/general/text_link.dart';
class DesktopNavigationBar extends StatefulWidget {
const DesktopNavigationBar({Key key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return DesktopNavigationBarState();
}
}
class DesktopNavigationBarState extends State<DesktopNavigationBar> {
@override
Widget build(BuildContext context) {
String currentRoute = ModalRoute.of(context).settings.name;
return Stack(
children: [
Container(
color: Colors.blue,
height: 80.0,
),
Container(
height: 80.0,
padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5.0, bottom: 5.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
NavigationBarLogo(),
Container(
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(width: 20.0,),
TextLink(
S.of(context).home,
'/',
color: Colors.white,
selected: currentRoute == '/',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).download,
'/download',
color: Colors.white,
selected: currentRoute == '/download',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).tutorials,
'/tutorials',
color: Colors.white,
selected: currentRoute == '/tutorials',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).support,
'/support',
color: Colors.white,
selected: currentRoute == '/support',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).shop,
'/shop',
color: Colors.white,
selected: currentRoute == '/shop',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).blog,
'/blog',
color: Colors.white,
selected: currentRoute == '/blog',
),
SizedBox(width: 15.0,),
TextLink(
S.of(context).login,
'/login',
color: Colors.white,
selected: currentRoute == '/login',
),
],
),
),
],
),
),
],
);
}
}