2316 lines
142 KiB
Dart
2316 lines
142 KiB
Dart
import '/backend/api_requests/api_calls.dart';
|
||
import '/components/alert_box_widget.dart';
|
||
import '/components/appbar_widget.dart';
|
||
import '/components/nav_bar1_widget.dart';
|
||
import '/flutterlib/flutter_button_tabbar.dart';
|
||
import '/flutterlib/flutter_theme.dart';
|
||
import '/flutterlib/flutter_util.dart';
|
||
import '/flutterlib/flutter_widgets.dart';
|
||
import 'package:aligned_dialog/aligned_dialog.dart';
|
||
import 'package:expandable/expandable.dart';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter/services.dart';
|
||
import 'package:flutter_svg/flutter_svg.dart';
|
||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||
import 'package:google_fonts/google_fonts.dart';
|
||
import 'package:provider/provider.dart';
|
||
import 'setting1_model.dart';
|
||
export 'setting1_model.dart';
|
||
|
||
class Setting1Widget extends StatefulWidget {
|
||
const Setting1Widget({Key? key}) : super(key: key);
|
||
|
||
@override
|
||
_Setting1WidgetState createState() => _Setting1WidgetState();
|
||
}
|
||
|
||
class _Setting1WidgetState extends State<Setting1Widget>
|
||
with TickerProviderStateMixin {
|
||
late Setting1Model _model;
|
||
|
||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
_model = createModel(context, () => Setting1Model());
|
||
|
||
_model.tabBarController = TabController(
|
||
vsync: this,
|
||
length: 3,
|
||
initialIndex: 2,
|
||
)..addListener(() => setState(() {}));
|
||
_model.passwordController ??= TextEditingController();
|
||
_model.passwordFocusNode ??= FocusNode();
|
||
|
||
_model.newPasswordController ??= TextEditingController();
|
||
_model.newPasswordFocusNode ??= FocusNode();
|
||
|
||
_model.newPasswordConfirmationController ??= TextEditingController();
|
||
_model.newPasswordConfirmationFocusNode ??= FocusNode();
|
||
|
||
_model.expandableController = ExpandableController(initialExpanded: false);
|
||
}
|
||
|
||
@override
|
||
void dispose() {
|
||
_model.dispose();
|
||
|
||
super.dispose();
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
if (isiOS) {
|
||
SystemChrome.setSystemUIOverlayStyle(
|
||
SystemUiOverlayStyle(
|
||
statusBarBrightness: Theme.of(context).brightness,
|
||
systemStatusBarContrastEnforced: true,
|
||
),
|
||
);
|
||
}
|
||
|
||
context.watch<FFAppState>();
|
||
|
||
return GestureDetector(
|
||
onTap: () => _model.unfocusNode.canRequestFocus
|
||
? FocusScope.of(context).requestFocus(_model.unfocusNode)
|
||
: FocusScope.of(context).unfocus(),
|
||
child: Scaffold(
|
||
key: scaffoldKey,
|
||
backgroundColor: Color(0xFFEBEBE4),
|
||
drawer: Container(
|
||
width: 180.0,
|
||
child: Drawer(
|
||
elevation: 16.0,
|
||
child: Container(
|
||
width: 100.0,
|
||
height: 100.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional.fromSTEB(0.0, 80.0, 0.0, 0.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('account');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
15.0, 8.0, 0.0, 0.0),
|
||
child: Container(
|
||
width: 40.0,
|
||
height: 40.0,
|
||
decoration: BoxDecoration(
|
||
color: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
shape: BoxShape.circle,
|
||
),
|
||
child: Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/company.svg',
|
||
width: 30.0,
|
||
height: 30.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
8.0, 8.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'xx1jcg7b' /* ABC Ltd */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('account1');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Group_2640.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
5.0, 0.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: Image.asset(
|
||
'assets/images/account.png',
|
||
width: 50.0,
|
||
height: 50.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
8.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'hjcj7vju' /* Account */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('tnc');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/document.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/tnc.svg',
|
||
width: 30.0,
|
||
height: 30.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
17.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'nsztko5f' /* T&C */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Group_2640.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.fitHeight,
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('policy');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Group_2640.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/pp.svg',
|
||
width: 30.0,
|
||
height: 30.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'4atkyki7' /* Privacy
|
||
Policy */
|
||
,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('language');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Group_2640.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/language.svg',
|
||
width: 30.0,
|
||
height: 30.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
15.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'euueuoyv' /* Languages */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
Container(
|
||
width: 180.0,
|
||
height: 61.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFF009B9A),
|
||
),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('setting');
|
||
},
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Group_2640.svg',
|
||
width: 0.0,
|
||
height: 0.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/setting-2.svg',
|
||
width: 30.0,
|
||
height: 30.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
15.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'ismmv5v5' /* Settings */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Colors.white,
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
),
|
||
appBar: PreferredSize(
|
||
preferredSize: Size.fromHeight(0.0),
|
||
child: AppBar(
|
||
backgroundColor: Color(0xFFE7E36B),
|
||
automaticallyImplyLeading: false,
|
||
actions: [],
|
||
centerTitle: false,
|
||
elevation: 0.0,
|
||
),
|
||
),
|
||
body: SafeArea(
|
||
top: true,
|
||
child: Stack(
|
||
children: [
|
||
Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment: MainAxisAlignment.start,
|
||
children: [
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
0.0, 0.0, 0.0, 8.0),
|
||
child: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'qh1q6mra' /* Setting */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
color: Color(0xFF364257),
|
||
fontSize: 24.0,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional.fromSTEB(0.0, 70.0, 0.0, 0.0),
|
||
child: Column(
|
||
children: [
|
||
Align(
|
||
alignment: Alignment(0.0, 0),
|
||
child: FlutterButtonTabBar(
|
||
useToggleButtonStyle: true,
|
||
labelStyle: FlutterTheme.of(context)
|
||
.titleMedium
|
||
.override(
|
||
fontFamily: 'Readex Pro',
|
||
fontSize: 16.0,
|
||
),
|
||
unselectedLabelStyle: TextStyle(),
|
||
labelColor: Color(0xFF364257),
|
||
unselectedLabelColor: Colors.white,
|
||
backgroundColor: Colors.white,
|
||
unselectedBackgroundColor: Color(0xFF364257),
|
||
borderColor: FlutterTheme.of(context).primary,
|
||
unselectedBorderColor:
|
||
FlutterTheme.of(context).alternate,
|
||
borderWidth: 2.0,
|
||
borderRadius: 0.0,
|
||
elevation: 0.0,
|
||
labelPadding: EdgeInsetsDirectional.fromSTEB(
|
||
0.0, 15.0, 0.0, 15.0),
|
||
buttonMargin: EdgeInsetsDirectional.fromSTEB(
|
||
8.0, 0.0, 8.0, 0.0),
|
||
padding: EdgeInsets.all(4.0),
|
||
tabs: [
|
||
Tab(
|
||
text: FFLocalizations.of(context).getText(
|
||
'l9cq5bsp' /* Preferred
|
||
Settings */
|
||
,
|
||
),
|
||
icon: Icon(
|
||
Icons.settings,
|
||
),
|
||
),
|
||
Tab(
|
||
text: FFLocalizations.of(context).getText(
|
||
'm66x8bku' /* Password */,
|
||
),
|
||
icon: Icon(
|
||
Icons.lock_outline,
|
||
),
|
||
),
|
||
Tab(
|
||
text: FFLocalizations.of(context).getText(
|
||
'g1v5hroa' /* Online Help */,
|
||
),
|
||
icon: Icon(
|
||
Icons.live_help_outlined,
|
||
),
|
||
),
|
||
],
|
||
controller: _model.tabBarController,
|
||
),
|
||
),
|
||
Expanded(
|
||
child: TabBarView(
|
||
controller: _model.tabBarController,
|
||
physics: const NeverScrollableScrollPhysics(),
|
||
children: [
|
||
Padding(
|
||
padding: EdgeInsetsDirectional.fromSTEB(
|
||
10.0, 0.0, 10.0, 0.0),
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
SwitchListTile.adaptive(
|
||
value: _model.switchListTileValue1 ??=
|
||
true,
|
||
onChanged: (newValue) async {
|
||
setState(() =>
|
||
_model.switchListTileValue1 =
|
||
newValue!);
|
||
},
|
||
title: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'k8dcylfx' /* Push notification */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.titleLarge
|
||
.override(
|
||
fontFamily: 'Outfit',
|
||
fontSize: 24.0,
|
||
fontWeight: FontWeight.w600,
|
||
),
|
||
),
|
||
tileColor: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
activeColor: Color(0xFF009B9A),
|
||
activeTrackColor:
|
||
FlutterTheme.of(context)
|
||
.accent1,
|
||
dense: false,
|
||
controlAffinity:
|
||
ListTileControlAffinity.trailing,
|
||
),
|
||
SwitchListTile.adaptive(
|
||
value: _model.switchListTileValue2 ??=
|
||
true,
|
||
onChanged: (newValue) async {
|
||
setState(() =>
|
||
_model.switchListTileValue2 =
|
||
newValue!);
|
||
},
|
||
title: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'ideo5dsl' /* Bookkeeping Queue Status */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.titleLarge
|
||
.override(
|
||
fontFamily: 'Outfit',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
tileColor: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
activeColor: Color(0xFF009B9A),
|
||
activeTrackColor:
|
||
FlutterTheme.of(context)
|
||
.accent1,
|
||
dense: false,
|
||
controlAffinity:
|
||
ListTileControlAffinity.trailing,
|
||
),
|
||
SwitchListTile.adaptive(
|
||
value: _model.switchListTileValue3 ??=
|
||
true,
|
||
onChanged: (newValue) async {
|
||
setState(() =>
|
||
_model.switchListTileValue3 =
|
||
newValue!);
|
||
},
|
||
title: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'jetskkjd' /* Company Secretary Queue Status */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.titleLarge
|
||
.override(
|
||
fontFamily: 'Outfit',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
tileColor: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
activeColor: Color(0xFF009B9A),
|
||
activeTrackColor:
|
||
FlutterTheme.of(context)
|
||
.accent1,
|
||
dense: false,
|
||
controlAffinity:
|
||
ListTileControlAffinity.trailing,
|
||
),
|
||
SwitchListTile.adaptive(
|
||
value: _model.switchListTileValue4 ??=
|
||
true,
|
||
onChanged: (newValue) async {
|
||
setState(() =>
|
||
_model.switchListTileValue4 =
|
||
newValue!);
|
||
},
|
||
title: Text(
|
||
FFLocalizations.of(context).getText(
|
||
'vqkwnwo2' /* Chat Room New Message */,
|
||
),
|
||
style: FlutterTheme.of(context)
|
||
.titleLarge
|
||
.override(
|
||
fontFamily: 'Outfit',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
tileColor: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
activeColor: Color(0xFF009B9A),
|
||
activeTrackColor:
|
||
FlutterTheme.of(context)
|
||
.accent1,
|
||
dense: false,
|
||
controlAffinity:
|
||
ListTileControlAffinity.trailing,
|
||
),
|
||
Container(
|
||
width: 435.0,
|
||
height: 100.0,
|
||
decoration: BoxDecoration(
|
||
color: FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment:
|
||
MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
10.0, 0.0, 0.0, 0.0),
|
||
child: FFButtonWidget(
|
||
onPressed: () {
|
||
print('Button pressed ...');
|
||
},
|
||
text:
|
||
FFLocalizations.of(context)
|
||
.getText(
|
||
'4kw8vmxm' /* Save */,
|
||
),
|
||
options: FFButtonOptions(
|
||
width: 159.0,
|
||
height: 50.0,
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
24.0, 0.0, 24.0, 0.0),
|
||
iconPadding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(0.0, 0.0,
|
||
0.0, 0.0),
|
||
color: Color(0xFF009B9A),
|
||
textStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.titleSmall
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
color: Colors.white,
|
||
),
|
||
elevation: 3.0,
|
||
borderSide: BorderSide(
|
||
color: Colors.transparent,
|
||
width: 1.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
40.0),
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 0.0, 10.0, 0.0),
|
||
child: FFButtonWidget(
|
||
onPressed: () {
|
||
print('Button pressed ...');
|
||
},
|
||
text:
|
||
FFLocalizations.of(context)
|
||
.getText(
|
||
'elbgfdtp' /* Reset */,
|
||
),
|
||
options: FFButtonOptions(
|
||
width: 159.0,
|
||
height: 50.0,
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
24.0, 0.0, 24.0, 0.0),
|
||
iconPadding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(0.0, 0.0,
|
||
0.0, 0.0),
|
||
color: Color(0xFF9B0025),
|
||
textStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.titleSmall
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
color: Colors.white,
|
||
),
|
||
elevation: 3.0,
|
||
borderSide: BorderSide(
|
||
color: Colors.transparent,
|
||
width: 1.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
40.0),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
SingleChildScrollView(
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Form(
|
||
key: _model.formKey,
|
||
autovalidateMode:
|
||
AutovalidateMode.disabled,
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional.fromSTEB(
|
||
0.0, 0.0, 0.0, 110.0),
|
||
child: Container(
|
||
width: 375.0,
|
||
height: 500.0,
|
||
decoration: BoxDecoration(
|
||
color:
|
||
FlutterTheme.of(context)
|
||
.secondaryBackground,
|
||
),
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 19.0, 0.0, 0.0),
|
||
child: ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/Lock.svg',
|
||
width: 100.0,
|
||
height: 100.0,
|
||
fit: BoxFit.contain,
|
||
),
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 12.0, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'qqhtwg3e' /* Current Password */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
8.0,
|
||
0.0,
|
||
8.0,
|
||
0.0),
|
||
child: Container(
|
||
width: 326.0,
|
||
child: TextFormField(
|
||
controller: _model
|
||
.passwordController,
|
||
focusNode: _model
|
||
.passwordFocusNode,
|
||
obscureText: !_model
|
||
.passwordVisibility,
|
||
decoration:
|
||
InputDecoration(
|
||
labelStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
hintStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
enabledBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.alternate,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.primary,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
errorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedErrorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
suffixIcon:
|
||
InkWell(
|
||
onTap: () =>
|
||
setState(
|
||
() => _model
|
||
.passwordVisibility =
|
||
!_model
|
||
.passwordVisibility,
|
||
),
|
||
focusNode: FocusNode(
|
||
skipTraversal:
|
||
true),
|
||
child: Icon(
|
||
_model.passwordVisibility
|
||
? Icons
|
||
.visibility_outlined
|
||
: Icons
|
||
.visibility_off_outlined,
|
||
size: 26.0,
|
||
),
|
||
),
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium,
|
||
validator: _model
|
||
.passwordControllerValidator
|
||
.asValidator(
|
||
context),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 12.0, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'gvojf57p' /* New Password */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
8.0,
|
||
0.0,
|
||
8.0,
|
||
0.0),
|
||
child: Container(
|
||
width: 326.0,
|
||
child: TextFormField(
|
||
controller: _model
|
||
.newPasswordController,
|
||
focusNode: _model
|
||
.newPasswordFocusNode,
|
||
obscureText: !_model
|
||
.newPasswordVisibility,
|
||
decoration:
|
||
InputDecoration(
|
||
labelStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
hintStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
enabledBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.alternate,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.primary,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
errorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedErrorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
suffixIcon:
|
||
InkWell(
|
||
onTap: () =>
|
||
setState(
|
||
() => _model
|
||
.newPasswordVisibility =
|
||
!_model
|
||
.newPasswordVisibility,
|
||
),
|
||
focusNode: FocusNode(
|
||
skipTraversal:
|
||
true),
|
||
child: Icon(
|
||
_model.newPasswordVisibility
|
||
? Icons
|
||
.visibility_outlined
|
||
: Icons
|
||
.visibility_off_outlined,
|
||
size: 26.0,
|
||
),
|
||
),
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium,
|
||
validator: _model
|
||
.newPasswordControllerValidator
|
||
.asValidator(
|
||
context),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 12.0, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'ky9jyapp' /* Confirm Password */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
8.0,
|
||
0.0,
|
||
8.0,
|
||
0.0),
|
||
child: Container(
|
||
width: 326.0,
|
||
child: TextFormField(
|
||
controller: _model
|
||
.newPasswordConfirmationController,
|
||
focusNode: _model
|
||
.newPasswordConfirmationFocusNode,
|
||
obscureText: !_model
|
||
.newPasswordConfirmationVisibility,
|
||
decoration:
|
||
InputDecoration(
|
||
labelStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
hintStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.labelMedium,
|
||
enabledBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.alternate,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.primary,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
errorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
focusedErrorBorder:
|
||
OutlineInputBorder(
|
||
borderSide:
|
||
BorderSide(
|
||
color: FlutterTheme.of(
|
||
context)
|
||
.error,
|
||
width: 2.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
23.8),
|
||
),
|
||
suffixIcon:
|
||
InkWell(
|
||
onTap: () =>
|
||
setState(
|
||
() => _model
|
||
.newPasswordConfirmationVisibility =
|
||
!_model
|
||
.newPasswordConfirmationVisibility,
|
||
),
|
||
focusNode: FocusNode(
|
||
skipTraversal:
|
||
true),
|
||
child: Icon(
|
||
_model.newPasswordConfirmationVisibility
|
||
? Icons
|
||
.visibility_outlined
|
||
: Icons
|
||
.visibility_off_outlined,
|
||
size: 26.0,
|
||
),
|
||
),
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium,
|
||
validator: _model
|
||
.newPasswordConfirmationControllerValidator
|
||
.asValidator(
|
||
context),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
10.0, 0.0, 10.0, 0.0),
|
||
child: Row(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
mainAxisAlignment:
|
||
MainAxisAlignment
|
||
.center,
|
||
children: [
|
||
Builder(
|
||
builder: (context) =>
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
15.0,
|
||
0.0,
|
||
20.0),
|
||
child: FFButtonWidget(
|
||
onPressed:
|
||
() async {
|
||
if (_model.formKey
|
||
.currentState ==
|
||
null ||
|
||
!_model
|
||
.formKey
|
||
.currentState!
|
||
.validate()) {
|
||
return;
|
||
}
|
||
_model.apiResultqep =
|
||
await NumstationGroup
|
||
.changePasswordCall
|
||
.call(
|
||
password: _model
|
||
.passwordController
|
||
.text,
|
||
newPassword: _model
|
||
.newPasswordController
|
||
.text,
|
||
newPasswordConfirmation:
|
||
_model
|
||
.newPasswordConfirmationController
|
||
.text,
|
||
token:
|
||
FFAppState()
|
||
.token,
|
||
);
|
||
if ((_model
|
||
.apiResultqep
|
||
?.succeeded ??
|
||
true)) {
|
||
await showDialog(
|
||
context:
|
||
context,
|
||
builder:
|
||
(alertDialogContext) {
|
||
return AlertDialog(
|
||
content: Text(
|
||
'All changes have been saved!'),
|
||
actions: [
|
||
TextButton(
|
||
onPressed: () =>
|
||
Navigator.pop(alertDialogContext),
|
||
child:
|
||
Text('Back'),
|
||
),
|
||
],
|
||
);
|
||
},
|
||
);
|
||
} else {
|
||
await showAlignedDialog(
|
||
context:
|
||
context,
|
||
isGlobal:
|
||
true,
|
||
avoidOverflow:
|
||
false,
|
||
targetAnchor: AlignmentDirectional(
|
||
0.0,
|
||
0.0)
|
||
.resolve(
|
||
Directionality.of(
|
||
context)),
|
||
followerAnchor: AlignmentDirectional(
|
||
0.0,
|
||
0.0)
|
||
.resolve(
|
||
Directionality.of(
|
||
context)),
|
||
builder:
|
||
(dialogContext) {
|
||
return Material(
|
||
color: Colors
|
||
.transparent,
|
||
child:
|
||
GestureDetector(
|
||
onTap: () => _model.unfocusNode.canRequestFocus
|
||
? FocusScope.of(context).requestFocus(_model.unfocusNode)
|
||
: FocusScope.of(context).unfocus(),
|
||
child:
|
||
AlertBoxWidget(),
|
||
),
|
||
);
|
||
},
|
||
).then((value) =>
|
||
setState(
|
||
() {}));
|
||
}
|
||
|
||
setState(() {});
|
||
},
|
||
text: FFLocalizations
|
||
.of(context)
|
||
.getText(
|
||
'sja5gpwy' /* Save */,
|
||
),
|
||
options:
|
||
FFButtonOptions(
|
||
width: 250.0,
|
||
height: 50.0,
|
||
padding:
|
||
EdgeInsets
|
||
.all(0.0),
|
||
iconPadding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
color: Color(
|
||
0xFF009B9A),
|
||
textStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.titleSmall
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
color: Colors
|
||
.white,
|
||
fontSize:
|
||
20.0,
|
||
),
|
||
elevation: 3.0,
|
||
borderSide:
|
||
BorderSide(
|
||
color: Colors
|
||
.transparent,
|
||
width: 1.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(
|
||
25.0),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
SingleChildScrollView(
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Container(
|
||
width: 375.0,
|
||
height: 900.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFFF4F7FA),
|
||
),
|
||
child: Column(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 12.0, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'n4nhzz4q' /* Contact Us */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 24.0,
|
||
fontWeight:
|
||
FontWeight.w500,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 12.0, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/call.svg',
|
||
width: 28.0,
|
||
height: 28.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'h5dblqs6' /* +852 3565 3138 */,
|
||
),
|
||
style:
|
||
FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 36.3, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/whatsapp.svg',
|
||
width: 28.0,
|
||
height: 28.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'ams0lwu5' /* +852 3565 3138 */,
|
||
),
|
||
style:
|
||
FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
decoration:
|
||
TextDecoration
|
||
.underline,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 36.3, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/sms.svg',
|
||
width: 28.0,
|
||
height: 28.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'bme1h0im' /* info@numstation.com */,
|
||
),
|
||
style:
|
||
FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
decoration:
|
||
TextDecoration
|
||
.underline,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 36.3, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/map.svg',
|
||
width: 28.0,
|
||
height: 28.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'ohr14wkz' /* Suite 2006, AIA Kowloon Tower,... */,
|
||
),
|
||
style:
|
||
FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 36.3, 0.0, 5.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
ClipRRect(
|
||
borderRadius:
|
||
BorderRadius.circular(
|
||
8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/clock.svg',
|
||
width: 28.0,
|
||
height: 28.0,
|
||
fit: BoxFit.cover,
|
||
),
|
||
),
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(16.0, 0.0,
|
||
0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'73l6v93x' /* Monday to Friday 9:00am–6:30pm */,
|
||
),
|
||
style:
|
||
FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
10.0, 0.0, 10.0, 0.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment:
|
||
MainAxisAlignment.center,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(0.0, 36.0,
|
||
0.0, 0.0),
|
||
child: FFButtonWidget(
|
||
onPressed: () async {
|
||
context.pushNamed(
|
||
'enquiry');
|
||
},
|
||
text: FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'8ma27m0j' /* Enquiry */,
|
||
),
|
||
options: FFButtonOptions(
|
||
width: 339.0,
|
||
height: 50.0,
|
||
padding:
|
||
EdgeInsets.all(0.0),
|
||
iconPadding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
color:
|
||
Color(0xFF009B9A),
|
||
textStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.titleSmall
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
color: Colors
|
||
.white,
|
||
fontSize:
|
||
20.0,
|
||
),
|
||
elevation: 3.0,
|
||
borderSide: BorderSide(
|
||
color: Colors
|
||
.transparent,
|
||
width: 1.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(25.0),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
10.0, 0.0, 10.0, 0.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment:
|
||
MainAxisAlignment.center,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(0.0, 12.0,
|
||
0.0, 0.0),
|
||
child: FFButtonWidget(
|
||
onPressed: () async {
|
||
context.pushNamed(
|
||
'myenquiry');
|
||
},
|
||
text: FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'm2yd8mn0' /* My Enquiry */,
|
||
),
|
||
options: FFButtonOptions(
|
||
width: 339.0,
|
||
height: 50.0,
|
||
padding:
|
||
EdgeInsets.all(0.0),
|
||
iconPadding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
color:
|
||
Color(0xFF009B9A),
|
||
textStyle:
|
||
FlutterTheme.of(
|
||
context)
|
||
.titleSmall
|
||
.override(
|
||
fontFamily:
|
||
'Roboto',
|
||
color: Colors
|
||
.white,
|
||
fontSize:
|
||
20.0,
|
||
),
|
||
elevation: 3.0,
|
||
borderSide: BorderSide(
|
||
color: Colors
|
||
.transparent,
|
||
width: 1.0,
|
||
),
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(25.0),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0, 16.0, 0.0, 0.0),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
mainAxisAlignment:
|
||
MainAxisAlignment.center,
|
||
children: [
|
||
Container(
|
||
width: 375.0,
|
||
height: 38.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFFF4F7FA),
|
||
),
|
||
child: Align(
|
||
alignment:
|
||
AlignmentDirectional(
|
||
-1.0, 0.0),
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'akbt5lp1' /* Online Documents */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
width: 375.0,
|
||
height: 38.0,
|
||
decoration: BoxDecoration(
|
||
color: Colors.white,
|
||
border: Border.all(
|
||
color: Color(0x000E2EEA),
|
||
width: 2.0,
|
||
),
|
||
),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Align(
|
||
alignment:
|
||
AlignmentDirectional(
|
||
-1.0, 0.0),
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'5nh8i5m3' /* 1. Payment Methods */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
0.0,
|
||
8.0,
|
||
0.0),
|
||
child: ClipRRect(
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/arrow-circle-right.svg',
|
||
width: 24.0,
|
||
height: 24.0,
|
||
fit: BoxFit.contain,
|
||
alignment: Alignment(
|
||
1.0, 0.0),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
width: 375.0,
|
||
height: 38.0,
|
||
decoration: BoxDecoration(
|
||
color: Colors.white,
|
||
border: Border.all(
|
||
color: Colors.transparent,
|
||
),
|
||
),
|
||
child: Row(
|
||
mainAxisSize: MainAxisSize.max,
|
||
children: [
|
||
Align(
|
||
alignment:
|
||
AlignmentDirectional(
|
||
-1.0, 0.0),
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'b30xtm9h' /* 2. Payment Terms & Conditions */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
Expanded(
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
0.0,
|
||
0.0,
|
||
8.0,
|
||
0.0),
|
||
child: ClipRRect(
|
||
borderRadius:
|
||
BorderRadius
|
||
.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/arrow-circle-right.svg',
|
||
width: 24.0,
|
||
height: 24.0,
|
||
fit: BoxFit.contain,
|
||
alignment: Alignment(
|
||
1.0, 0.0),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
Container(
|
||
width: 375.0,
|
||
height: 38.0,
|
||
decoration: BoxDecoration(
|
||
color: Color(0xFFF4F7FA),
|
||
),
|
||
child: Align(
|
||
alignment: AlignmentDirectional(
|
||
-1.0, 0.0),
|
||
child: Padding(
|
||
padding: EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0, 0.0, 0.0, 0.0),
|
||
child: Text(
|
||
FFLocalizations.of(context)
|
||
.getText(
|
||
'k2575it8' /* FAQ */,
|
||
),
|
||
style: FlutterTheme.of(
|
||
context)
|
||
.bodyMedium
|
||
.override(
|
||
fontFamily:
|
||
'Readex Pro',
|
||
fontSize: 16.0,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
ListView(
|
||
padding: EdgeInsets.zero,
|
||
shrinkWrap: true,
|
||
scrollDirection: Axis.vertical,
|
||
children: [
|
||
Container(
|
||
height: 200.0,
|
||
child: Container(
|
||
width: 358.0,
|
||
height: 112.0,
|
||
color: Colors.white,
|
||
child: ExpandableNotifier(
|
||
controller: _model
|
||
.expandableController,
|
||
child: ExpandablePanel(
|
||
header: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'23qviltk' /* 1. I am not in HongKong, how c... */,
|
||
),
|
||
style: FlutterTheme
|
||
.of(context)
|
||
.displaySmall
|
||
.override(
|
||
fontFamily:
|
||
'Outfit',
|
||
color: Colors
|
||
.black,
|
||
fontSize:
|
||
16.0,
|
||
fontWeight:
|
||
FontWeight
|
||
.w500,
|
||
),
|
||
),
|
||
),
|
||
collapsed: Container(),
|
||
expanded: Column(
|
||
mainAxisSize:
|
||
MainAxisSize.max,
|
||
children: [
|
||
Padding(
|
||
padding:
|
||
EdgeInsetsDirectional
|
||
.fromSTEB(
|
||
16.0,
|
||
0.0,
|
||
0.0,
|
||
0.0),
|
||
child: Text(
|
||
FFLocalizations.of(
|
||
context)
|
||
.getText(
|
||
'5zvngksg' /* Please click here for the paym... */,
|
||
),
|
||
style: FlutterTheme.of(
|
||
context)
|
||
.bodyMedium,
|
||
),
|
||
),
|
||
],
|
||
),
|
||
theme:
|
||
ExpandableThemeData(
|
||
tapHeaderToExpand:
|
||
true,
|
||
tapBodyToExpand:
|
||
false,
|
||
tapBodyToCollapse:
|
||
false,
|
||
headerAlignment:
|
||
ExpandablePanelHeaderAlignment
|
||
.center,
|
||
hasIcon: true,
|
||
expandIcon:
|
||
Icons.add_circle,
|
||
collapseIcon:
|
||
FontAwesomeIcons
|
||
.minusCircle,
|
||
iconSize: 25.0,
|
||
iconColor:
|
||
Color(0xFFF3CF5D),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, 1.0),
|
||
child: wrapWithModel(
|
||
model: _model.navBar1Model,
|
||
updateCallback: () => setState(() {}),
|
||
child: NavBar1Widget(),
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(0.0, -1.0),
|
||
child: wrapWithModel(
|
||
model: _model.appbarModel,
|
||
updateCallback: () => setState(() {}),
|
||
child: AppbarWidget(),
|
||
),
|
||
),
|
||
Align(
|
||
alignment: AlignmentDirectional(1.07, -0.97),
|
||
child: Padding(
|
||
padding:
|
||
EdgeInsetsDirectional.fromSTEB(0.0, 550.0, 30.0, 0.0),
|
||
child: InkWell(
|
||
splashColor: Colors.transparent,
|
||
focusColor: Colors.transparent,
|
||
hoverColor: Colors.transparent,
|
||
highlightColor: Colors.transparent,
|
||
onTap: () async {
|
||
context.pushNamed('chatbox');
|
||
},
|
||
child: Container(
|
||
width: 71.0,
|
||
height: 71.0,
|
||
decoration: BoxDecoration(
|
||
gradient: LinearGradient(
|
||
colors: [Color(0xFFE7E63B), Color(0xFFC6E6D7)],
|
||
stops: [0.0, 1.0],
|
||
begin: AlignmentDirectional(-1.0, 0.0),
|
||
end: AlignmentDirectional(1.0, 0),
|
||
),
|
||
shape: BoxShape.circle,
|
||
),
|
||
child: ClipRRect(
|
||
borderRadius: BorderRadius.circular(8.0),
|
||
child: SvgPicture.asset(
|
||
'assets/images/message-2.svg',
|
||
width: 100.0,
|
||
height: 100.0,
|
||
fit: BoxFit.none,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|