import 'package:chat/data/UserData.dart'; import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:chat/home/DiscoverPage.dart'; import 'package:chat/home/ParkPage.dart'; import 'package:chat/home/follow_user_dynamic.dart'; import 'package:chat/utils/CustomUI.dart'; import 'package:flutter/material.dart'; import 'package:location_permissions/location_permissions.dart'; import 'package:oktoast/oktoast.dart'; class FindPage extends StatefulWidget { FindPage({Key key}) : super(key: key); @override _FindPageState createState() => new _FindPageState(); } class _FindPageState extends State { @override void initState() { super.initState(); } @override Widget build(BuildContext context) { Widget appBar = new AppBar( backgroundColor: AppColors.NewAppbarBgColor, title: new Text(I18n.of(context).find, textScaleFactor: 1.0, style: Constants.MainTitleStyle), centerTitle: false, elevation: 1, ); return SafeArea( child: Scaffold( appBar: appBar, body: _buildBody(), )); } _buildBody() { return Column( children: [ _buildRadioButton(), _buildMyProgramButton(), _buildNearButton(), _buildScanButton(), ], ); } _buildIconButton(Widget icon, Gradient gradient, String text, callback, {double marginTop: 12, bool showDivder: false}) { return InkWell( onTap: callback, child: Container( margin: EdgeInsets.only(top: marginTop), padding: EdgeInsets.only(left: 16.5, right: 20, top: 9, bottom: 9), decoration: BoxDecoration( color: Colors.white, border: showDivder ? Border(top: Constants.GreyBorderSide) : null), child: Row( children: [ Stack( alignment: Alignment.center, children: [ Container( width: Constants.ContactAvatarSize, height: Constants.ContactAvatarSize, decoration: BoxDecoration( gradient: gradient, borderRadius: BorderRadius.circular(4)), ), icon ], ), Expanded( child: Container( margin: EdgeInsets.only(left: 15), child: Text( text, textScaleFactor: 1.0, style: TextStyle(fontSize: 16), ), ), ), Icon( IconData(0xe63c, fontFamily: 'iconfont'), size: 25.0, color: Color(AppColors.TabIconNormal), ) ], ))); } _buildRadioButton() { Widget icon = Positioned( // left: 4.5, top: 5, child: Icon( IconData(0xe66b, fontFamily: Constants.IconFontFamily), color: Colors.white, )); var gradient = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ const Color(0xFFFBD25C), const Color(0xFFF57723), ]); return _buildIconButton(icon, gradient, I18n.of(context).radio, () { if (!UserData().stationOpenSwitch) { showToast(I18n.of(context).system_not_open); return; } if (!UserData().hasLocationPermission) { CustomUI.buildOneConfirm( context, I18n.of(context).get_location, I18n.of(context).determine, () { Navigator.of(context).pop(); LocationPermissions().openAppSettings(); }); return; } Navigator.of(context).push( new MaterialPageRoute( builder: (context) { return ParkPage(); }, ), ); }); } _buildMyProgramButton() { Widget icon = Icon( IconData(0xe66d, fontFamily: Constants.IconFontFamily), color: Colors.white, ); var gradient = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ const Color(0xFFF87354), const Color(0xFFF23D6B), ]); return _buildIconButton( icon, gradient, UserData().isMan() ? I18n.of(context).woman_gold : I18n.of(context).man_gold, () { if (!UserData().myProgramOpenSwitch) { showToast(I18n.of(context).system_not_open); return; } Navigator.of(context).push( new MaterialPageRoute( builder: (context) { return FollowUserPage(); }, ), ); }, marginTop: 0, showDivder: true); } _buildNearButton() { Widget icon = Icon( IconData(0xe665, fontFamily: Constants.IconFontFamily), color: Colors.white, ); var gradient = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ const Color(0xFFB678FF), const Color(0xFF6760FC), ]); return _buildIconButton(icon, gradient, I18n.of(context).nearby, () { if (!UserData().nearbyOpenSwitch) { showToast(I18n.of(context).system_not_open); return; } if (!UserData().hasLocationPermission) { CustomUI.buildOneConfirm( context, I18n.of(context).get_location, I18n.of(context).determine, () { Navigator.of(context).pop(); LocationPermissions().openAppSettings(); }); return; } Navigator.of(context).push( new MaterialPageRoute( builder: (context) { return DisCoverPage(); }, ), ); }); } _buildScanButton() { Widget icon = Positioned( top: 5, child: Icon( IconData(0xe666, fontFamily: Constants.IconFontFamily), color: Colors.white, )); var gradient = LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ const Color(0xFF48DFF2), const Color(0xFF0080FF), ]); return _buildIconButton(icon, gradient, I18n.of(context).scan, () { CustomUI().goScanPage(context); }); } @override void dispose() { super.dispose(); } }