first commit
This commit is contained in:
BIN
lib/.DS_Store
vendored
Normal file
BIN
lib/.DS_Store
vendored
Normal file
Binary file not shown.
83
lib/account/account1/account1_model.dart
Normal file
83
lib/account/account1/account1_model.dart
Normal file
@@ -0,0 +1,83 @@
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/components/no_permission_widget.dart';
|
||||
import '/flutterlib/flutter_button_tabbar.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'account1_widget.dart' show Account1Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Account1Model extends FlutterModel<Account1Widget> {
|
||||
/// Local state fields for this page.
|
||||
|
||||
bool checkPermission20 = false;
|
||||
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Stores action output result for [Backend Call - API (Check role has permission)] action in account1 widget.
|
||||
ApiCallResponse? apiResult20;
|
||||
// Stores action output result for [Backend Call - API (logout)] action in Button widget.
|
||||
ApiCallResponse? logout;
|
||||
// State field(s) for TabBar widget.
|
||||
TabController? tabBarController;
|
||||
int get tabBarCurrentIndex =>
|
||||
tabBarController != null ? tabBarController!.index : 0;
|
||||
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for Switch widget.
|
||||
bool? switchValue;
|
||||
// Model for noPermission component.
|
||||
late NoPermissionModel noPermissionModel;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
noPermissionModel = createModel(context, () => NoPermissionModel());
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
tabBarController?.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
noPermissionModel.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2071
lib/account/account1/account1_widget.dart
Normal file
2071
lib/account/account1/account1_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
270
lib/app_state.dart
Normal file
270
lib/app_state.dart
Normal file
@@ -0,0 +1,270 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '/backend/schema/enums/enums.dart';
|
||||
import 'backend/api_requests/api_manager.dart';
|
||||
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
||||
import 'package:csv/csv.dart';
|
||||
import 'package:synchronized/synchronized.dart';
|
||||
import 'flutterlib/flutter_util.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
class FFAppState extends ChangeNotifier {
|
||||
static FFAppState _instance = FFAppState._internal();
|
||||
|
||||
factory FFAppState() {
|
||||
return _instance;
|
||||
}
|
||||
|
||||
FFAppState._internal();
|
||||
|
||||
static void reset() {
|
||||
_instance = FFAppState._internal();
|
||||
}
|
||||
|
||||
Future initializePersistedState() async {
|
||||
secureStorage = FlutterSecureStorage();
|
||||
await _safeInitAsync(() async {
|
||||
_token = await secureStorage.getString('ff_token') ?? _token;
|
||||
});
|
||||
await _safeInitAsync(() async {
|
||||
_email = await secureStorage.getString('ff_email') ?? _email;
|
||||
});
|
||||
await _safeInitAsync(() async {
|
||||
_password = await secureStorage.getString('ff_password') ?? _password;
|
||||
});
|
||||
await _safeInitAsync(() async {
|
||||
_addPermissionsID =
|
||||
await secureStorage.getStringList('ff_addPermissionsID') ??
|
||||
_addPermissionsID;
|
||||
});
|
||||
await _safeInitAsync(() async {
|
||||
_removePermissionsID =
|
||||
await secureStorage.getStringList('ff_removePermissionsID') ??
|
||||
_removePermissionsID;
|
||||
});
|
||||
}
|
||||
|
||||
void update(VoidCallback callback) {
|
||||
callback();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
late FlutterSecureStorage secureStorage;
|
||||
|
||||
String _token = '';
|
||||
String get token => _token;
|
||||
set token(String _value) {
|
||||
_token = _value;
|
||||
secureStorage.setString('ff_token', _value);
|
||||
}
|
||||
|
||||
void deleteToken() {
|
||||
secureStorage.delete(key: 'ff_token');
|
||||
}
|
||||
|
||||
int _userid = 0;
|
||||
int get userid => _userid;
|
||||
set userid(int _value) {
|
||||
_userid = _value;
|
||||
}
|
||||
|
||||
String _email = '';
|
||||
String get email => _email;
|
||||
set email(String _value) {
|
||||
_email = _value;
|
||||
secureStorage.setString('ff_email', _value);
|
||||
}
|
||||
|
||||
void deleteEmail() {
|
||||
secureStorage.delete(key: 'ff_email');
|
||||
}
|
||||
|
||||
String _password = '';
|
||||
String get password => _password;
|
||||
set password(String _value) {
|
||||
_password = _value;
|
||||
secureStorage.setString('ff_password', _value);
|
||||
}
|
||||
|
||||
void deletePassword() {
|
||||
secureStorage.delete(key: 'ff_password');
|
||||
}
|
||||
|
||||
bool _showChat = false;
|
||||
bool get showChat => _showChat;
|
||||
set showChat(bool _value) {
|
||||
_showChat = _value;
|
||||
}
|
||||
|
||||
String _roleID = '';
|
||||
String get roleID => _roleID;
|
||||
set roleID(String _value) {
|
||||
_roleID = _value;
|
||||
}
|
||||
|
||||
int _memberID = 0;
|
||||
int get memberID => _memberID;
|
||||
set memberID(int _value) {
|
||||
_memberID = _value;
|
||||
}
|
||||
|
||||
List<String> _addPermissionsID = [];
|
||||
List<String> get addPermissionsID => _addPermissionsID;
|
||||
set addPermissionsID(List<String> _value) {
|
||||
_addPermissionsID = _value;
|
||||
secureStorage.setStringList('ff_addPermissionsID', _value);
|
||||
}
|
||||
|
||||
void deleteAddPermissionsID() {
|
||||
secureStorage.delete(key: 'ff_addPermissionsID');
|
||||
}
|
||||
|
||||
void addToAddPermissionsID(String _value) {
|
||||
_addPermissionsID.add(_value);
|
||||
secureStorage.setStringList('ff_addPermissionsID', _addPermissionsID);
|
||||
}
|
||||
|
||||
void removeFromAddPermissionsID(String _value) {
|
||||
_addPermissionsID.remove(_value);
|
||||
secureStorage.setStringList('ff_addPermissionsID', _addPermissionsID);
|
||||
}
|
||||
|
||||
void removeAtIndexFromAddPermissionsID(int _index) {
|
||||
_addPermissionsID.removeAt(_index);
|
||||
secureStorage.setStringList('ff_addPermissionsID', _addPermissionsID);
|
||||
}
|
||||
|
||||
void updateAddPermissionsIDAtIndex(
|
||||
int _index,
|
||||
String Function(String) updateFn,
|
||||
) {
|
||||
_addPermissionsID[_index] = updateFn(_addPermissionsID[_index]);
|
||||
secureStorage.setStringList('ff_addPermissionsID', _addPermissionsID);
|
||||
}
|
||||
|
||||
void insertAtIndexInAddPermissionsID(int _index, String _value) {
|
||||
_addPermissionsID.insert(_index, _value);
|
||||
secureStorage.setStringList('ff_addPermissionsID', _addPermissionsID);
|
||||
}
|
||||
|
||||
dynamic _docStatus = jsonDecode('{\"status\":\"completed\"}');
|
||||
dynamic get docStatus => _docStatus;
|
||||
set docStatus(dynamic _value) {
|
||||
_docStatus = _value;
|
||||
}
|
||||
|
||||
List<String> _removePermissionsID = [];
|
||||
List<String> get removePermissionsID => _removePermissionsID;
|
||||
set removePermissionsID(List<String> _value) {
|
||||
_removePermissionsID = _value;
|
||||
secureStorage.setStringList('ff_removePermissionsID', _value);
|
||||
}
|
||||
|
||||
void deleteRemovePermissionsID() {
|
||||
secureStorage.delete(key: 'ff_removePermissionsID');
|
||||
}
|
||||
|
||||
void addToRemovePermissionsID(String _value) {
|
||||
_removePermissionsID.add(_value);
|
||||
secureStorage.setStringList('ff_removePermissionsID', _removePermissionsID);
|
||||
}
|
||||
|
||||
void removeFromRemovePermissionsID(String _value) {
|
||||
_removePermissionsID.remove(_value);
|
||||
secureStorage.setStringList('ff_removePermissionsID', _removePermissionsID);
|
||||
}
|
||||
|
||||
void removeAtIndexFromRemovePermissionsID(int _index) {
|
||||
_removePermissionsID.removeAt(_index);
|
||||
secureStorage.setStringList('ff_removePermissionsID', _removePermissionsID);
|
||||
}
|
||||
|
||||
void updateRemovePermissionsIDAtIndex(
|
||||
int _index,
|
||||
String Function(String) updateFn,
|
||||
) {
|
||||
_removePermissionsID[_index] = updateFn(_removePermissionsID[_index]);
|
||||
secureStorage.setStringList('ff_removePermissionsID', _removePermissionsID);
|
||||
}
|
||||
|
||||
void insertAtIndexInRemovePermissionsID(int _index, String _value) {
|
||||
_removePermissionsID.insert(_index, _value);
|
||||
secureStorage.setStringList('ff_removePermissionsID', _removePermissionsID);
|
||||
}
|
||||
|
||||
String _status = 'In progress';
|
||||
String get status => _status;
|
||||
set status(String _value) {
|
||||
_status = _value;
|
||||
}
|
||||
|
||||
String _failed = 'Failed';
|
||||
String get failed => _failed;
|
||||
set failed(String _value) {
|
||||
_failed = _value;
|
||||
}
|
||||
}
|
||||
|
||||
LatLng? _latLngFromString(String? val) {
|
||||
if (val == null) {
|
||||
return null;
|
||||
}
|
||||
final split = val.split(',');
|
||||
final lat = double.parse(split.first);
|
||||
final lng = double.parse(split.last);
|
||||
return LatLng(lat, lng);
|
||||
}
|
||||
|
||||
void _safeInit(Function() initializeField) {
|
||||
try {
|
||||
initializeField();
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
Future _safeInitAsync(Function() initializeField) async {
|
||||
try {
|
||||
await initializeField();
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
extension FlutterSecureStorageExtensions on FlutterSecureStorage {
|
||||
static final _lock = Lock();
|
||||
|
||||
Future<void> writeSync({required String key, String? value}) async =>
|
||||
await _lock.synchronized(() async {
|
||||
await write(key: key, value: value);
|
||||
});
|
||||
|
||||
void remove(String key) => delete(key: key);
|
||||
|
||||
Future<String?> getString(String key) async => await read(key: key);
|
||||
Future<void> setString(String key, String value) async =>
|
||||
await writeSync(key: key, value: value);
|
||||
|
||||
Future<bool?> getBool(String key) async => (await read(key: key)) == 'true';
|
||||
Future<void> setBool(String key, bool value) async =>
|
||||
await writeSync(key: key, value: value.toString());
|
||||
|
||||
Future<int?> getInt(String key) async =>
|
||||
int.tryParse(await read(key: key) ?? '');
|
||||
Future<void> setInt(String key, int value) async =>
|
||||
await writeSync(key: key, value: value.toString());
|
||||
|
||||
Future<double?> getDouble(String key) async =>
|
||||
double.tryParse(await read(key: key) ?? '');
|
||||
Future<void> setDouble(String key, double value) async =>
|
||||
await writeSync(key: key, value: value.toString());
|
||||
|
||||
Future<List<String>?> getStringList(String key) async =>
|
||||
await read(key: key).then((result) {
|
||||
if (result == null || result.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
return CsvToListConverter()
|
||||
.convert(result)
|
||||
.first
|
||||
.map((e) => e.toString())
|
||||
.toList();
|
||||
});
|
||||
Future<void> setStringList(String key, List<String> value) async =>
|
||||
await writeSync(key: key, value: ListToCsvConverter().convert([value]));
|
||||
}
|
||||
11
lib/auth/custom_auth/auth_util.dart
Normal file
11
lib/auth/custom_auth/auth_util.dart
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'custom_auth_manager.dart';
|
||||
|
||||
export 'custom_auth_manager.dart';
|
||||
|
||||
final _authManager = CustomAuthManager();
|
||||
CustomAuthManager get authManager => _authManager;
|
||||
|
||||
String get currentUserUid => currentUser?.uid ?? '';
|
||||
String? get currentAuthenticationToken => authManager.authenticationToken;
|
||||
String? get currentAuthRefreshToken => authManager.refreshToken;
|
||||
DateTime? get currentAuthTokenExpiration => authManager.tokenExpiration;
|
||||
135
lib/auth/custom_auth/custom_auth_manager.dart
Normal file
135
lib/auth/custom_auth/custom_auth_manager.dart
Normal file
@@ -0,0 +1,135 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import 'custom_auth_user_provider.dart';
|
||||
|
||||
export 'custom_auth_manager.dart';
|
||||
|
||||
const _kAuthTokenKey = '_auth_authentication_token_';
|
||||
const _kRefreshTokenKey = '_auth_refresh_token_';
|
||||
const _kTokenExpirationKey = '_auth_token_expiration_';
|
||||
const _kUidKey = '_auth_uid_';
|
||||
const _kUserDataKey = '_auth_user_data_';
|
||||
|
||||
class CustomAuthManager {
|
||||
// Auth session attributes
|
||||
String? authenticationToken;
|
||||
String? refreshToken;
|
||||
DateTime? tokenExpiration;
|
||||
// User attributes
|
||||
String? uid;
|
||||
|
||||
Future signOut() async {
|
||||
authenticationToken = null;
|
||||
refreshToken = null;
|
||||
tokenExpiration = null;
|
||||
uid = null;
|
||||
|
||||
// Update the current user.
|
||||
numstationAuthUserSubject.add(
|
||||
NumstationAuthUser(loggedIn: false),
|
||||
);
|
||||
persistAuthData();
|
||||
}
|
||||
|
||||
Future<NumstationAuthUser?> signIn({
|
||||
String? authenticationToken,
|
||||
String? refreshToken,
|
||||
DateTime? tokenExpiration,
|
||||
String? authUid,
|
||||
}) async =>
|
||||
_updateCurrentUser(
|
||||
authenticationToken: authenticationToken,
|
||||
refreshToken: refreshToken,
|
||||
tokenExpiration: tokenExpiration,
|
||||
authUid: authUid,
|
||||
);
|
||||
|
||||
void updateAuthUserData({
|
||||
String? authenticationToken,
|
||||
String? refreshToken,
|
||||
DateTime? tokenExpiration,
|
||||
String? authUid,
|
||||
}) {
|
||||
assert(
|
||||
currentUser?.loggedIn ?? false,
|
||||
'User must be logged in to update auth user data.',
|
||||
);
|
||||
|
||||
_updateCurrentUser(
|
||||
authenticationToken: authenticationToken,
|
||||
refreshToken: refreshToken,
|
||||
tokenExpiration: tokenExpiration,
|
||||
authUid: authUid,
|
||||
);
|
||||
}
|
||||
|
||||
NumstationAuthUser? _updateCurrentUser({
|
||||
String? authenticationToken,
|
||||
String? refreshToken,
|
||||
DateTime? tokenExpiration,
|
||||
String? authUid,
|
||||
}) {
|
||||
this.authenticationToken = authenticationToken;
|
||||
this.refreshToken = refreshToken;
|
||||
this.tokenExpiration = tokenExpiration;
|
||||
this.uid = authUid;
|
||||
|
||||
// Update the current user stream.
|
||||
final updatedUser = NumstationAuthUser(
|
||||
loggedIn: true,
|
||||
uid: authUid,
|
||||
);
|
||||
numstationAuthUserSubject.add(updatedUser);
|
||||
persistAuthData();
|
||||
return updatedUser;
|
||||
}
|
||||
|
||||
late SharedPreferences _prefs;
|
||||
Future initialize() async {
|
||||
_prefs = await SharedPreferences.getInstance();
|
||||
|
||||
try {
|
||||
authenticationToken = _prefs.getString(_kAuthTokenKey);
|
||||
refreshToken = _prefs.getString(_kRefreshTokenKey);
|
||||
tokenExpiration = _prefs.getInt(_kTokenExpirationKey) != null
|
||||
? DateTime.fromMillisecondsSinceEpoch(
|
||||
_prefs.getInt(_kTokenExpirationKey)!)
|
||||
: null;
|
||||
uid = _prefs.getString(_kUidKey);
|
||||
} catch (e) {
|
||||
if (kDebugMode) {
|
||||
print('Error initializing auth: $e');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final authTokenExists = authenticationToken != null;
|
||||
final tokenExpired =
|
||||
tokenExpiration != null && tokenExpiration!.isBefore(DateTime.now());
|
||||
final updatedUser = NumstationAuthUser(
|
||||
loggedIn: authTokenExists && !tokenExpired,
|
||||
uid: uid,
|
||||
);
|
||||
numstationAuthUserSubject.add(updatedUser);
|
||||
}
|
||||
|
||||
void persistAuthData() {
|
||||
authenticationToken != null
|
||||
? _prefs.setString(_kAuthTokenKey, authenticationToken!)
|
||||
: _prefs.remove(_kAuthTokenKey);
|
||||
refreshToken != null
|
||||
? _prefs.setString(_kRefreshTokenKey, refreshToken!)
|
||||
: _prefs.remove(_kRefreshTokenKey);
|
||||
tokenExpiration != null
|
||||
? _prefs.setInt(
|
||||
_kTokenExpirationKey, tokenExpiration!.millisecondsSinceEpoch)
|
||||
: _prefs.remove(_kTokenExpirationKey);
|
||||
uid != null ? _prefs.setString(_kUidKey, uid!) : _prefs.remove(_kUidKey);
|
||||
}
|
||||
}
|
||||
|
||||
NumstationAuthUser? currentUser;
|
||||
bool get loggedIn => currentUser?.loggedIn ?? false;
|
||||
18
lib/auth/custom_auth/custom_auth_user_provider.dart
Normal file
18
lib/auth/custom_auth/custom_auth_user_provider.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
import 'custom_auth_manager.dart';
|
||||
|
||||
class NumstationAuthUser {
|
||||
NumstationAuthUser({required this.loggedIn, this.uid});
|
||||
|
||||
bool loggedIn;
|
||||
String? uid;
|
||||
}
|
||||
|
||||
/// Generates a stream of the authenticated user.
|
||||
BehaviorSubject<NumstationAuthUser> numstationAuthUserSubject =
|
||||
BehaviorSubject.seeded(NumstationAuthUser(loggedIn: false));
|
||||
Stream<NumstationAuthUser> numstationAuthUserStream() =>
|
||||
numstationAuthUserSubject
|
||||
.asBroadcastStream()
|
||||
.map((user) => currentUser = user);
|
||||
BIN
lib/backend/.DS_Store
vendored
Normal file
BIN
lib/backend/.DS_Store
vendored
Normal file
Binary file not shown.
1159
lib/backend/api_requests/api_calls.dart
Normal file
1159
lib/backend/api_requests/api_calls.dart
Normal file
File diff suppressed because it is too large
Load Diff
383
lib/backend/api_requests/api_manager.dart
Normal file
383
lib/backend/api_requests/api_manager.dart
Normal file
@@ -0,0 +1,383 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:core';
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:http_parser/http_parser.dart';
|
||||
import 'package:mime_type/mime_type.dart';
|
||||
|
||||
import '../../flutterlib/uploaded_file.dart';
|
||||
|
||||
enum ApiCallType {
|
||||
GET,
|
||||
POST,
|
||||
DELETE,
|
||||
PUT,
|
||||
PATCH,
|
||||
}
|
||||
|
||||
enum BodyType {
|
||||
NONE,
|
||||
JSON,
|
||||
TEXT,
|
||||
X_WWW_FORM_URL_ENCODED,
|
||||
MULTIPART,
|
||||
}
|
||||
|
||||
class ApiCallRecord extends Equatable {
|
||||
ApiCallRecord(this.callName, this.apiUrl, this.headers, this.params,
|
||||
this.body, this.bodyType);
|
||||
final String callName;
|
||||
final String apiUrl;
|
||||
final Map<String, dynamic> headers;
|
||||
final Map<String, dynamic> params;
|
||||
final String? body;
|
||||
final BodyType? bodyType;
|
||||
|
||||
@override
|
||||
List<Object?> get props =>
|
||||
[callName, apiUrl, headers, params, body, bodyType];
|
||||
}
|
||||
|
||||
class ApiCallResponse {
|
||||
const ApiCallResponse(
|
||||
this.jsonBody,
|
||||
this.headers,
|
||||
this.statusCode, {
|
||||
this.response,
|
||||
});
|
||||
final dynamic jsonBody;
|
||||
final Map<String, String> headers;
|
||||
final int statusCode;
|
||||
final http.Response? response;
|
||||
// Whether we received a 2xx status (which generally marks success).
|
||||
bool get succeeded => statusCode >= 200 && statusCode < 300;
|
||||
String getHeader(String headerName) => headers[headerName] ?? '';
|
||||
// Return the raw body from the response, or if this came from a cloud call
|
||||
// and the body is not a string, then the json encoded body.
|
||||
String get bodyText =>
|
||||
response?.body ??
|
||||
(jsonBody is String ? jsonBody as String : jsonEncode(jsonBody));
|
||||
|
||||
static ApiCallResponse fromHttpResponse(
|
||||
http.Response response,
|
||||
bool returnBody,
|
||||
bool decodeUtf8,
|
||||
) {
|
||||
var jsonBody;
|
||||
try {
|
||||
final responseBody = decodeUtf8 && returnBody
|
||||
? const Utf8Decoder().convert(response.bodyBytes)
|
||||
: response.body;
|
||||
jsonBody = returnBody ? json.decode(responseBody) : null;
|
||||
} catch (_) {}
|
||||
return ApiCallResponse(
|
||||
jsonBody,
|
||||
response.headers,
|
||||
response.statusCode,
|
||||
response: response,
|
||||
);
|
||||
}
|
||||
|
||||
static ApiCallResponse fromCloudCallResponse(Map<String, dynamic> response) =>
|
||||
ApiCallResponse(
|
||||
response['body'],
|
||||
ApiManager.toStringMap(response['headers'] ?? {}),
|
||||
response['statusCode'] ?? 400,
|
||||
);
|
||||
}
|
||||
|
||||
class ApiManager {
|
||||
ApiManager._();
|
||||
|
||||
// Cache that will ensure identical calls are not repeatedly made.
|
||||
static Map<ApiCallRecord, ApiCallResponse> _apiCache = {};
|
||||
|
||||
static ApiManager? _instance;
|
||||
static ApiManager get instance => _instance ??= ApiManager._();
|
||||
|
||||
// If your API calls need authentication, populate this field once
|
||||
// the user has authenticated. Alter this as needed.
|
||||
static String? _accessToken;
|
||||
|
||||
// You may want to call this if, for example, you make a change to the
|
||||
// database and no longer want the cached result of a call that may
|
||||
// have changed.
|
||||
static void clearCache(String callName) => _apiCache.keys
|
||||
.toSet()
|
||||
.forEach((k) => k.callName == callName ? _apiCache.remove(k) : null);
|
||||
|
||||
static Map<String, String> toStringMap(Map map) =>
|
||||
map.map((key, value) => MapEntry(key.toString(), value.toString()));
|
||||
|
||||
static String asQueryParams(Map<String, dynamic> map) => map.entries
|
||||
.map((e) =>
|
||||
"${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value.toString())}")
|
||||
.join('&');
|
||||
|
||||
static Future<ApiCallResponse> urlRequest(
|
||||
ApiCallType callType,
|
||||
String apiUrl,
|
||||
Map<String, dynamic> headers,
|
||||
Map<String, dynamic> params,
|
||||
bool returnBody,
|
||||
bool decodeUtf8, {
|
||||
http.Client? client,
|
||||
}) async {
|
||||
if (params.isNotEmpty) {
|
||||
final specifier =
|
||||
Uri.parse(apiUrl).queryParameters.isNotEmpty ? '&' : '?';
|
||||
apiUrl = '$apiUrl$specifier${asQueryParams(params)}';
|
||||
}
|
||||
final makeRequest = callType == ApiCallType.GET
|
||||
? (client != null ? client.get : http.get)
|
||||
: (client != null ? client.delete : http.delete);
|
||||
final response =
|
||||
await makeRequest(Uri.parse(apiUrl), headers: toStringMap(headers));
|
||||
return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8);
|
||||
}
|
||||
|
||||
static Future<ApiCallResponse> requestWithBody(
|
||||
ApiCallType type,
|
||||
String apiUrl,
|
||||
Map<String, dynamic> headers,
|
||||
Map<String, dynamic> params,
|
||||
String? body,
|
||||
BodyType? bodyType,
|
||||
bool returnBody,
|
||||
bool encodeBodyUtf8,
|
||||
bool decodeUtf8,
|
||||
bool alwaysAllowBody, {
|
||||
http.Client? client,
|
||||
}) async {
|
||||
assert(
|
||||
{ApiCallType.POST, ApiCallType.PUT, ApiCallType.PATCH}.contains(type) ||
|
||||
(alwaysAllowBody && type == ApiCallType.DELETE),
|
||||
'Invalid ApiCallType $type for request with body',
|
||||
);
|
||||
final postBody =
|
||||
createBody(headers, params, body, bodyType, encodeBodyUtf8);
|
||||
|
||||
if (bodyType == BodyType.MULTIPART) {
|
||||
return multipartRequest(type, apiUrl, headers, params, returnBody,
|
||||
decodeUtf8, alwaysAllowBody);
|
||||
}
|
||||
|
||||
final requestFn = {
|
||||
ApiCallType.POST: client != null ? client.post : http.post,
|
||||
ApiCallType.PUT: client != null ? client.put : http.put,
|
||||
ApiCallType.PATCH: client != null ? client.patch : http.patch,
|
||||
ApiCallType.DELETE: client != null ? client.delete : http.delete,
|
||||
}[type]!;
|
||||
final response = await requestFn(Uri.parse(apiUrl),
|
||||
headers: toStringMap(headers), body: postBody);
|
||||
return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8);
|
||||
}
|
||||
|
||||
static Future<ApiCallResponse> multipartRequest(
|
||||
ApiCallType? type,
|
||||
String apiUrl,
|
||||
Map<String, dynamic> headers,
|
||||
Map<String, dynamic> params,
|
||||
bool returnBody,
|
||||
bool decodeUtf8,
|
||||
bool alwaysAllowBody,
|
||||
) async {
|
||||
assert(
|
||||
{ApiCallType.POST, ApiCallType.PUT, ApiCallType.PATCH}.contains(type) ||
|
||||
(alwaysAllowBody && type == ApiCallType.DELETE),
|
||||
'Invalid ApiCallType $type for request with body',
|
||||
);
|
||||
bool Function(dynamic) _isFile = (e) =>
|
||||
e is FFUploadedFile ||
|
||||
e is List<FFUploadedFile> ||
|
||||
(e is List && e.firstOrNull is FFUploadedFile);
|
||||
|
||||
final nonFileParams = toStringMap(
|
||||
Map.fromEntries(params.entries.where((e) => !_isFile(e.value))));
|
||||
|
||||
List<http.MultipartFile> files = [];
|
||||
params.entries.where((e) => _isFile(e.value)).forEach((e) {
|
||||
final param = e.value;
|
||||
final uploadedFiles = param is List
|
||||
? param as List<FFUploadedFile>
|
||||
: [param as FFUploadedFile];
|
||||
uploadedFiles.forEach((uploadedFile) => files.add(
|
||||
http.MultipartFile.fromBytes(
|
||||
e.key,
|
||||
uploadedFile.bytes ?? Uint8List.fromList([]),
|
||||
filename: uploadedFile.name,
|
||||
contentType: _getMediaType(uploadedFile.name),
|
||||
),
|
||||
));
|
||||
});
|
||||
|
||||
final request = http.MultipartRequest(
|
||||
type.toString().split('.').last, Uri.parse(apiUrl))
|
||||
..headers.addAll(toStringMap(headers))
|
||||
..files.addAll(files);
|
||||
nonFileParams.forEach((key, value) => request.fields[key] = value);
|
||||
|
||||
final response = await http.Response.fromStream(await request.send());
|
||||
return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8);
|
||||
}
|
||||
|
||||
static MediaType? _getMediaType(String? filename) {
|
||||
final contentType = mime(filename);
|
||||
if (contentType == null) {
|
||||
return null;
|
||||
}
|
||||
final parts = contentType.split('/');
|
||||
if (parts.length != 2) {
|
||||
return null;
|
||||
}
|
||||
return MediaType(parts.first, parts.last);
|
||||
}
|
||||
|
||||
static dynamic createBody(
|
||||
Map<String, dynamic> headers,
|
||||
Map<String, dynamic>? params,
|
||||
String? body,
|
||||
BodyType? bodyType,
|
||||
bool encodeBodyUtf8,
|
||||
) {
|
||||
String? contentType;
|
||||
dynamic postBody;
|
||||
switch (bodyType) {
|
||||
case BodyType.JSON:
|
||||
contentType = 'application/json';
|
||||
postBody = body ?? json.encode(params ?? {});
|
||||
break;
|
||||
case BodyType.TEXT:
|
||||
contentType = 'text/plain';
|
||||
postBody = body ?? json.encode(params ?? {});
|
||||
break;
|
||||
case BodyType.X_WWW_FORM_URL_ENCODED:
|
||||
contentType = 'application/x-www-form-urlencoded';
|
||||
postBody = toStringMap(params ?? {});
|
||||
break;
|
||||
case BodyType.MULTIPART:
|
||||
contentType = 'multipart/form-data';
|
||||
postBody = params;
|
||||
break;
|
||||
case BodyType.NONE:
|
||||
case null:
|
||||
break;
|
||||
}
|
||||
// Set "Content-Type" header if it was previously unset.
|
||||
if (contentType != null &&
|
||||
!headers.keys.any((h) => h.toLowerCase() == 'content-type')) {
|
||||
headers['Content-Type'] = contentType;
|
||||
}
|
||||
return encodeBodyUtf8 && postBody is String
|
||||
? utf8.encode(postBody)
|
||||
: postBody;
|
||||
}
|
||||
|
||||
Future<ApiCallResponse> makeApiCall({
|
||||
required String callName,
|
||||
required String apiUrl,
|
||||
required ApiCallType callType,
|
||||
Map<String, dynamic> headers = const {},
|
||||
Map<String, dynamic> params = const {},
|
||||
String? body,
|
||||
BodyType? bodyType,
|
||||
bool returnBody = true,
|
||||
bool encodeBodyUtf8 = false,
|
||||
bool decodeUtf8 = false,
|
||||
bool cache = false,
|
||||
bool alwaysAllowBody = false,
|
||||
http.Client? client,
|
||||
}) async {
|
||||
final callRecord =
|
||||
ApiCallRecord(callName, apiUrl, headers, params, body, bodyType);
|
||||
// Modify for your specific needs if this differs from your API.
|
||||
if (_accessToken != null) {
|
||||
headers[HttpHeaders.authorizationHeader] = 'Bearer $_accessToken';
|
||||
}
|
||||
if (!apiUrl.startsWith('http')) {
|
||||
apiUrl = 'https://$apiUrl';
|
||||
}
|
||||
|
||||
// If we've already made this exact call before and caching is on,
|
||||
// return the cached result.
|
||||
if (cache && _apiCache.containsKey(callRecord)) {
|
||||
return _apiCache[callRecord]!;
|
||||
}
|
||||
|
||||
ApiCallResponse result;
|
||||
try {
|
||||
switch (callType) {
|
||||
case ApiCallType.GET:
|
||||
result = await urlRequest(
|
||||
callType,
|
||||
apiUrl,
|
||||
headers,
|
||||
params,
|
||||
returnBody,
|
||||
decodeUtf8,
|
||||
client: client,
|
||||
);
|
||||
break;
|
||||
case ApiCallType.DELETE:
|
||||
result = alwaysAllowBody
|
||||
? await requestWithBody(
|
||||
callType,
|
||||
apiUrl,
|
||||
headers,
|
||||
params,
|
||||
body,
|
||||
bodyType,
|
||||
returnBody,
|
||||
encodeBodyUtf8,
|
||||
decodeUtf8,
|
||||
alwaysAllowBody,
|
||||
client: client,
|
||||
)
|
||||
: await urlRequest(
|
||||
callType,
|
||||
apiUrl,
|
||||
headers,
|
||||
params,
|
||||
returnBody,
|
||||
decodeUtf8,
|
||||
client: client,
|
||||
);
|
||||
break;
|
||||
case ApiCallType.POST:
|
||||
case ApiCallType.PUT:
|
||||
case ApiCallType.PATCH:
|
||||
result = await requestWithBody(
|
||||
callType,
|
||||
apiUrl,
|
||||
headers,
|
||||
params,
|
||||
body,
|
||||
bodyType,
|
||||
returnBody,
|
||||
encodeBodyUtf8,
|
||||
decodeUtf8,
|
||||
alwaysAllowBody,
|
||||
client: client,
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
// If caching is on, cache the result (if present).
|
||||
if (cache) {
|
||||
_apiCache[callRecord] = result;
|
||||
}
|
||||
} catch (e) {
|
||||
result = ApiCallResponse(
|
||||
null,
|
||||
{},
|
||||
-1,
|
||||
);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
23
lib/backend/schema/enums/enums.dart
Normal file
23
lib/backend/schema/enums/enums.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
enum Position {
|
||||
director,
|
||||
}
|
||||
|
||||
extension FFEnumExtensions<T extends Enum> on T {
|
||||
String serialize() => name;
|
||||
}
|
||||
|
||||
extension FFEnumListExtensions<T extends Enum> on Iterable<T> {
|
||||
T? deserialize(String? value) =>
|
||||
firstWhereOrNull((e) => e.serialize() == value);
|
||||
}
|
||||
|
||||
T? deserializeEnum<T>(String? value) {
|
||||
switch (T) {
|
||||
case (Position):
|
||||
return Position.values.deserialize(value) as T?;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
BIN
lib/bookkeeping/.DS_Store
vendored
Normal file
BIN
lib/bookkeeping/.DS_Store
vendored
Normal file
Binary file not shown.
42
lib/bookkeeping/bk1/bk1_model.dart
Normal file
42
lib/bookkeeping/bk1/bk1_model.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_animations.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk1_widget.dart' show Bk1Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_animate/flutter_animate.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';
|
||||
|
||||
class Bk1Model extends FlutterModel<Bk1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2746
lib/bookkeeping/bk1/bk1_widget.dart
Normal file
2746
lib/bookkeeping/bk1/bk1_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
42
lib/bookkeeping/bk2/bk2_model.dart
Normal file
42
lib/bookkeeping/bk2/bk2_model.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_animations.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk2_widget.dart' show Bk2Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_animate/flutter_animate.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';
|
||||
|
||||
class Bk2Model extends FlutterModel<Bk2Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2715
lib/bookkeeping/bk2/bk2_widget.dart
Normal file
2715
lib/bookkeeping/bk2/bk2_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
38
lib/bookkeeping/bk3/bk3_model.dart
Normal file
38
lib/bookkeeping/bk3/bk3_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk3_widget.dart' show Bk3Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Bk3Model extends FlutterModel<Bk3Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1743
lib/bookkeeping/bk3/bk3_widget.dart
Normal file
1743
lib/bookkeeping/bk3/bk3_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
66
lib/bookkeeping/bk4/bk4_model.dart
Normal file
66
lib/bookkeeping/bk4/bk4_model.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/alert_box_custom_widget.dart';
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/emptylist_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 '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'bk4_widget.dart' show Bk4Widget;
|
||||
import 'package:aligned_dialog/aligned_dialog.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.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';
|
||||
|
||||
class Bk4Model extends FlutterModel<Bk4Widget> {
|
||||
/// Local state fields for this page.
|
||||
|
||||
bool checkPermission26 = false;
|
||||
|
||||
bool checkPermission27 = false;
|
||||
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Stores action output result for [Backend Call - API (Check role has permission)] action in bk4 widget.
|
||||
ApiCallResponse? apiResult26;
|
||||
// Stores action output result for [Backend Call - API (Check role has permission)] action in bk4 widget.
|
||||
ApiCallResponse? apiResult27;
|
||||
// State field(s) for TabBar widget.
|
||||
TabController? tabBarController;
|
||||
int get tabBarCurrentIndex =>
|
||||
tabBarController != null ? tabBarController!.index : 0;
|
||||
|
||||
// Stores action output result for [Backend Call - API (View Document)] action in Container widget.
|
||||
ApiCallResponse? apiResult4qr;
|
||||
// Stores action output result for [Backend Call - API (View Document)] action in Container widget.
|
||||
ApiCallResponse? apiResult8ni;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
tabBarController?.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1782
lib/bookkeeping/bk4/bk4_widget.dart
Normal file
1782
lib/bookkeeping/bk4/bk4_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
55
lib/bookkeeping/bk4_1/bk41_model.dart
Normal file
55
lib/bookkeeping/bk4_1/bk41_model.dart
Normal file
@@ -0,0 +1,55 @@
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/flutterlib/flutter_drop_down.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import '/flutterlib/upload_data.dart';
|
||||
import 'bk41_widget.dart' show Bk41Widget;
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
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';
|
||||
|
||||
class Bk41Model extends FlutterModel<Bk41Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
bool isDataUploading = false;
|
||||
FFUploadedFile uploadedLocalFile =
|
||||
FFUploadedFile(bytes: Uint8List.fromList([]));
|
||||
|
||||
// State field(s) for name widget.
|
||||
FocusNode? nameFocusNode;
|
||||
TextEditingController? nameController;
|
||||
String? Function(BuildContext, String?)? nameControllerValidator;
|
||||
// State field(s) for description widget.
|
||||
FocusNode? descriptionFocusNode;
|
||||
TextEditingController? descriptionController;
|
||||
String? Function(BuildContext, String?)? descriptionControllerValidator;
|
||||
// State field(s) for category widget.
|
||||
String? categoryValue;
|
||||
FormFieldController<String>? categoryValueController;
|
||||
// Stores action output result for [Backend Call - API (Add Document)] action in Button widget.
|
||||
ApiCallResponse? apiResultl9k;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
nameFocusNode?.dispose();
|
||||
nameController?.dispose();
|
||||
|
||||
descriptionFocusNode?.dispose();
|
||||
descriptionController?.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1084
lib/bookkeeping/bk4_1/bk41_widget.dart
Normal file
1084
lib/bookkeeping/bk4_1/bk41_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
29
lib/bookkeeping/bk4_2/bk42_model.dart
Normal file
29
lib/bookkeeping/bk4_2/bk42_model.dart
Normal file
@@ -0,0 +1,29 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk42_widget.dart' show Bk42Widget;
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
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';
|
||||
|
||||
class Bk42Model extends FlutterModel<Bk42Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1249
lib/bookkeeping/bk4_2/bk42_widget.dart
Normal file
1249
lib/bookkeeping/bk4_2/bk42_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
95
lib/bookkeeping/bk_checkout/bk_checkout_model.dart
Normal file
95
lib/bookkeeping/bk_checkout/bk_checkout_model.dart
Normal file
@@ -0,0 +1,95 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk_checkout_widget.dart' show BkCheckoutWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BkCheckoutModel extends FlutterModel<BkCheckoutWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2154
lib/bookkeeping/bk_checkout/bk_checkout_widget.dart
Normal file
2154
lib/bookkeeping/bk_checkout/bk_checkout_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
39
lib/bookkeeping/bk_checkout1/bk_checkout1_model.dart
Normal file
39
lib/bookkeeping/bk_checkout1/bk_checkout1_model.dart
Normal file
@@ -0,0 +1,39 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk_checkout1_widget.dart' show BkCheckout1Widget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BkCheckout1Model extends FlutterModel<BkCheckout1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1000
lib/bookkeeping/bk_checkout1/bk_checkout1_widget.dart
Normal file
1000
lib/bookkeeping/bk_checkout1/bk_checkout1_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
38
lib/bookkeeping/bk_view/bk_view_model.dart
Normal file
38
lib/bookkeeping/bk_view/bk_view_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'bk_view_widget.dart' show BkViewWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BkViewModel extends FlutterModel<BkViewWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
174
lib/bookkeeping/bk_view/bk_view_widget.dart
Normal file
174
lib/bookkeeping/bk_view/bk_view_widget.dart
Normal file
@@ -0,0 +1,174 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'bk_view_model.dart';
|
||||
export 'bk_view_model.dart';
|
||||
|
||||
class BkViewWidget extends StatefulWidget {
|
||||
const BkViewWidget({
|
||||
Key? key,
|
||||
required this.fileUrl,
|
||||
}) : super(key: key);
|
||||
|
||||
final dynamic fileUrl;
|
||||
|
||||
@override
|
||||
_BkViewWidgetState createState() => _BkViewWidgetState();
|
||||
}
|
||||
|
||||
class _BkViewWidgetState extends State<BkViewWidget> {
|
||||
late BkViewModel _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => BkViewModel());
|
||||
}
|
||||
|
||||
@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: FlutterTheme.of(context).primaryBackground,
|
||||
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: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Container(
|
||||
width: 390.0,
|
||||
height: 546.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFCECECE),
|
||||
),
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 5.0, 5.0, 0.0),
|
||||
child: FlutterIconButton(
|
||||
borderRadius: 20.0,
|
||||
borderWidth: 1.0,
|
||||
buttonSize: 40.0,
|
||||
fillColor: Color(0xFF9B0025),
|
||||
icon: Icon(
|
||||
Icons.close,
|
||||
color: Color(0xFFE8E8E8),
|
||||
size: 26.0,
|
||||
),
|
||||
onPressed: () async {
|
||||
context.safePop();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: Image.network(
|
||||
widget.fileUrl!.toString(),
|
||||
width: 300.0,
|
||||
height: 200.0,
|
||||
fit: BoxFit.contain,
|
||||
alignment: Alignment(0.0, 0.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
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(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
64
lib/bookkeeping/search1/search1_model.dart
Normal file
64
lib/bookkeeping/search1/search1_model.dart
Normal file
@@ -0,0 +1,64 @@
|
||||
import '/backend/api_requests/api_calls.dart';
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/emptylist_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_drop_down.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'search1_widget.dart' show Search1Widget;
|
||||
import 'package:easy_debounce/easy_debounce.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Search1Model extends FlutterModel<Search1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode;
|
||||
TextEditingController? textController;
|
||||
String? Function(BuildContext, String?)? textControllerValidator;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue;
|
||||
FormFieldController<String>? dropDownValueController;
|
||||
// State field(s) for CheckboxListTile widget.
|
||||
bool? checkboxListTileValue;
|
||||
// State field(s) for Checkbox widget.
|
||||
|
||||
Map<dynamic, bool> checkboxValueMap = {};
|
||||
List<dynamic> get checkboxCheckedItems =>
|
||||
checkboxValueMap.entries.where((e) => e.value).map((e) => e.key).toList();
|
||||
|
||||
// Stores action output result for [Backend Call - API (View Document)] action in Container widget.
|
||||
ApiCallResponse? apiResultr1v;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode?.dispose();
|
||||
textController?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1425
lib/bookkeeping/search1/search1_widget.dart
Normal file
1425
lib/bookkeeping/search1/search1_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
89
lib/bookkeeping/search_page/search_page_model.dart
Normal file
89
lib/bookkeeping/search_page/search_page_model.dart
Normal file
@@ -0,0 +1,89 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_drop_down.dart';
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'search_page_widget.dart' show SearchPageWidget;
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class SearchPageModel extends FlutterModel<SearchPageWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue1;
|
||||
FormFieldController<String>? dropDownValueController1;
|
||||
// State field(s) for status widget.
|
||||
String? statusValue;
|
||||
FormFieldController<String>? statusValueController;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue2;
|
||||
FormFieldController<String>? dropDownValueController2;
|
||||
// State field(s) for category_id122 widget.
|
||||
String? categoryId122Value;
|
||||
FormFieldController<String>? categoryId122ValueController;
|
||||
// State field(s) for status122 widget.
|
||||
String? status122Value;
|
||||
FormFieldController<String>? status122ValueController;
|
||||
// State field(s) for search122 widget.
|
||||
FocusNode? search122FocusNode;
|
||||
TextEditingController? search122Controller;
|
||||
String? Function(BuildContext, String?)? search122ControllerValidator;
|
||||
// State field(s) for fix_date122 widget.
|
||||
String? fixDate122Value;
|
||||
FormFieldController<String>? fixDate122ValueController;
|
||||
DateTime? datePicked1;
|
||||
// State field(s) for afterdate widget.
|
||||
FocusNode? afterdateFocusNode;
|
||||
TextEditingController? afterdateController;
|
||||
String? Function(BuildContext, String?)? afterdateControllerValidator;
|
||||
DateTime? datePicked2;
|
||||
// State field(s) for beforedate widget.
|
||||
FocusNode? beforedateFocusNode;
|
||||
TextEditingController? beforedateController;
|
||||
String? Function(BuildContext, String?)? beforedateControllerValidator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
search122FocusNode?.dispose();
|
||||
search122Controller?.dispose();
|
||||
|
||||
afterdateFocusNode?.dispose();
|
||||
afterdateController?.dispose();
|
||||
|
||||
beforedateFocusNode?.dispose();
|
||||
beforedateController?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1080
lib/bookkeeping/search_page/search_page_widget.dart
Normal file
1080
lib/bookkeeping/search_page/search_page_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
BIN
lib/comp_sec_serv/.DS_Store
vendored
Normal file
BIN
lib/comp_sec_serv/.DS_Store
vendored
Normal file
Binary file not shown.
38
lib/comp_sec_serv/compsec/compsec_model.dart
Normal file
38
lib/comp_sec_serv/compsec/compsec_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_widget.dart' show CompsecWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecModel extends FlutterModel<CompsecWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1913
lib/comp_sec_serv/compsec/compsec_widget.dart
Normal file
1913
lib/comp_sec_serv/compsec/compsec_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
52
lib/comp_sec_serv/compsec1/compsec1_model.dart
Normal file
52
lib/comp_sec_serv/compsec1/compsec1_model.dart
Normal file
@@ -0,0 +1,52 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec1_widget.dart' show Compsec1Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Compsec1Model extends FlutterModel<Compsec1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
998
lib/comp_sec_serv/compsec1/compsec1_widget.dart
Normal file
998
lib/comp_sec_serv/compsec1/compsec1_widget.dart
Normal file
@@ -0,0 +1,998 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec1_model.dart';
|
||||
export 'compsec1_model.dart';
|
||||
|
||||
class Compsec1Widget extends StatefulWidget {
|
||||
const Compsec1Widget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_Compsec1WidgetState createState() => _Compsec1WidgetState();
|
||||
}
|
||||
|
||||
class _Compsec1WidgetState extends State<Compsec1Widget> {
|
||||
late Compsec1Model _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => Compsec1Model());
|
||||
|
||||
_model.textController1 ??= TextEditingController();
|
||||
_model.textFieldFocusNode1 ??= FocusNode();
|
||||
|
||||
_model.textController2 ??= TextEditingController();
|
||||
_model.textFieldFocusNode2 ??= FocusNode();
|
||||
}
|
||||
|
||||
@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(
|
||||
'92o53lpo' /* 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(
|
||||
'835y9lid' /* 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(
|
||||
'jv2pf91k' /* 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(
|
||||
'nxwco5vj' /* 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(
|
||||
'l0nsfcxs' /* 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(
|
||||
'hbx5adtz' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 100.0, 0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 16.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'yl3l7eim' /* Leave */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 120.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Group_2641.svg',
|
||||
width: 117.99,
|
||||
height: 93.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'zwfwqzzv' /* Incorporation of Hong Kong Lim... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: Image.asset(
|
||||
'assets/images/Screenshot_2023-10-03_at_2.37.53_PM.png',
|
||||
width: 361.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 339.0,
|
||||
height: 380.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 0.0, 12.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'keezf1vf' /* Company Name (English) */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 0.0, 20.0, 0.0),
|
||||
child: TextFormField(
|
||||
controller: _model.textController1,
|
||||
focusNode: _model.textFieldFocusNode1,
|
||||
autofocus: true,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
labelStyle:
|
||||
FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
hintStyle:
|
||||
FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF6D7581),
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.primary,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedErrorBorder:
|
||||
OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium,
|
||||
validator: _model
|
||||
.textController1Validator
|
||||
.asValidator(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'3zu2a46u' /* *Company name availability sub... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 14.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 0.0, 12.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'8d5culyk' /* Company Name (Chinese) */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 0.0, 20.0, 0.0),
|
||||
child: TextFormField(
|
||||
controller: _model.textController2,
|
||||
focusNode: _model.textFieldFocusNode2,
|
||||
autofocus: true,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
labelStyle:
|
||||
FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
hintStyle:
|
||||
FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF6D7581),
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.primary,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedErrorBorder:
|
||||
OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context)
|
||||
.error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium,
|
||||
validator: _model
|
||||
.textController2Validator
|
||||
.asValidator(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'arncdqbt' /* *Company name availability sub... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 14.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 26.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec2');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'tljva06m' /* Next */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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, 12.0, 0.0, 10.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'bvz1hg0a' /* Save as Draft */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
38
lib/comp_sec_serv/compsec2/compsec2_model.dart
Normal file
38
lib/comp_sec_serv/compsec2/compsec2_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec2_widget.dart' show Compsec2Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Compsec2Model extends FlutterModel<Compsec2Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
942
lib/comp_sec_serv/compsec2/compsec2_widget.dart
Normal file
942
lib/comp_sec_serv/compsec2/compsec2_widget.dart
Normal file
@@ -0,0 +1,942 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec2_model.dart';
|
||||
export 'compsec2_model.dart';
|
||||
|
||||
class Compsec2Widget extends StatefulWidget {
|
||||
const Compsec2Widget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_Compsec2WidgetState createState() => _Compsec2WidgetState();
|
||||
}
|
||||
|
||||
class _Compsec2WidgetState extends State<Compsec2Widget> {
|
||||
late Compsec2Model _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => Compsec2Model());
|
||||
}
|
||||
|
||||
@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(
|
||||
'dxr9rmgy' /* 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(
|
||||
'702yl7m0' /* 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(
|
||||
'wwzwxs22' /* 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(
|
||||
'aeyxj085' /* 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(
|
||||
'epdakt7y' /* 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(
|
||||
'mj1w7zyc' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 16.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(-1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
16.0, 0.0, 0.0, 0.0),
|
||||
child: InkWell(
|
||||
splashColor: Colors.transparent,
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
onTap: () async {
|
||||
context.safePop();
|
||||
},
|
||||
child: Container(
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFD6DEE9),
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
0.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(10.0, 0.0,
|
||||
0.0, 0.0),
|
||||
child: Icon(
|
||||
Icons.arrow_back_ios,
|
||||
color:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.secondaryText,
|
||||
size: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'50jclc5z' /* Leave */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 120.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Group_2641.svg',
|
||||
width: 117.99,
|
||||
height: 93.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'5izkmrgr' /* Incorporation of Hong Kong Lim... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: Image.asset(
|
||||
'assets/images/Screenshot_2023-10-03_at_2.39.44_PM.png',
|
||||
width: 361.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 339.0,
|
||||
height: 240.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'z9wa4hm8' /* Will you be a director of this... */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 15.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 320.0,
|
||||
height: 51.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFF4F7FA),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
border: Border.all(
|
||||
color: Color(0xFF009B9A),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.check_sharp,
|
||||
color: Color(0xFF009B9A),
|
||||
size: 24.0,
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'tfbxbrpe' /* Yes */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF009B9A),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 320.0,
|
||||
height: 51.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFF4F7FA),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
border: Border.all(
|
||||
color: Color(0xFF009B9A),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.close_rounded,
|
||||
color: Color(0xFF009B9A),
|
||||
size: 24.0,
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'6x24ewrd' /* No */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF009B9A),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 26.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec3');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'9memmyaw' /* Next */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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, 26.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'aqoxptvi' /* Save as Draft */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
116
lib/comp_sec_serv/compsec3/compsec3_model.dart
Normal file
116
lib/comp_sec_serv/compsec3/compsec3_model.dart
Normal file
@@ -0,0 +1,116 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_count_controller.dart';
|
||||
import '/flutterlib/flutter_drop_down.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'compsec3_widget.dart' show Compsec3Widget;
|
||||
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';
|
||||
|
||||
class Compsec3Model extends FlutterModel<Compsec3Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for CountController widget.
|
||||
int? countControllerValue;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue1;
|
||||
FormFieldController<String>? dropDownValueController1;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue2;
|
||||
FormFieldController<String>? dropDownValueController2;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue3;
|
||||
FormFieldController<String>? dropDownValueController3;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode9;
|
||||
TextEditingController? textController9;
|
||||
String? Function(BuildContext, String?)? textController9Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
textFieldFocusNode9?.dispose();
|
||||
textController9?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2480
lib/comp_sec_serv/compsec3/compsec3_widget.dart
Normal file
2480
lib/comp_sec_serv/compsec3/compsec3_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
38
lib/comp_sec_serv/compsec4/compsec4_model.dart
Normal file
38
lib/comp_sec_serv/compsec4/compsec4_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec4_widget.dart' show Compsec4Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Compsec4Model extends FlutterModel<Compsec4Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
944
lib/comp_sec_serv/compsec4/compsec4_widget.dart
Normal file
944
lib/comp_sec_serv/compsec4/compsec4_widget.dart
Normal file
@@ -0,0 +1,944 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec4_model.dart';
|
||||
export 'compsec4_model.dart';
|
||||
|
||||
class Compsec4Widget extends StatefulWidget {
|
||||
const Compsec4Widget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_Compsec4WidgetState createState() => _Compsec4WidgetState();
|
||||
}
|
||||
|
||||
class _Compsec4WidgetState extends State<Compsec4Widget> {
|
||||
late Compsec4Model _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => Compsec4Model());
|
||||
}
|
||||
|
||||
@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(
|
||||
'g2r0v4x0' /* 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(
|
||||
'ds84qstf' /* 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(
|
||||
'djl6yw5l' /* 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(
|
||||
'tnq2vrel' /* 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(
|
||||
'v445ykuq' /* 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(
|
||||
'3guxnphw' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 16.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(-1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
16.0, 0.0, 0.0, 0.0),
|
||||
child: InkWell(
|
||||
splashColor: Colors.transparent,
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
onTap: () async {
|
||||
context.safePop();
|
||||
},
|
||||
child: Container(
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFD6DEE9),
|
||||
shape: BoxShape.circle,
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
0.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(10.0, 0.0,
|
||||
0.0, 0.0),
|
||||
child: Icon(
|
||||
Icons.arrow_back_ios,
|
||||
color:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.secondaryText,
|
||||
size: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'r9gnqjrl' /* Leave */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 120.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Group_2641.svg',
|
||||
width: 117.99,
|
||||
height: 93.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'myxhuny4' /* Incorporation of Hong Kong Lim... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: Image.asset(
|
||||
'assets/images/Screenshot_2023-10-03_at_2.43.11_PM.png',
|
||||
width: 361.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 339.0,
|
||||
height: 260.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'sp543ge4' /* Do you need to set up an Airwa... */,
|
||||
),
|
||||
textAlign: TextAlign.start,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 22.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 320.0,
|
||||
height: 51.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFF4F7FA),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
border: Border.all(
|
||||
color: Color(0xFF009B9A),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.check_sharp,
|
||||
color: Color(0xFF009B9A),
|
||||
size: 24.0,
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'mys13cwm' /* Yes */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF009B9A),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Container(
|
||||
width: 320.0,
|
||||
height: 51.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFF4F7FA),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
border: Border.all(
|
||||
color: Color(0xFF009B9A),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.close_rounded,
|
||||
color: Color(0xFF009B9A),
|
||||
size: 24.0,
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'ca3kq4q4' /* No */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF009B9A),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 26.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec5');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'y8t66j72' /* Next */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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, 26.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'2aujthlt' /* Save as Draft */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
38
lib/comp_sec_serv/compsec5/compsec5_model.dart
Normal file
38
lib/comp_sec_serv/compsec5/compsec5_model.dart
Normal file
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec5_widget.dart' show Compsec5Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class Compsec5Model extends FlutterModel<Compsec5Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1842
lib/comp_sec_serv/compsec5/compsec5_widget.dart
Normal file
1842
lib/comp_sec_serv/compsec5/compsec5_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,53 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_changeaddress_widget.dart' show CompsecChangeaddressWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecChangeaddressModel
|
||||
extends FlutterModel<CompsecChangeaddressWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,137 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_radio_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'compsec_changedirector_widget.dart' show CompsecChangedirectorWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecChangedirectorModel
|
||||
extends FlutterModel<CompsecChangedirectorWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for RadioButton widget.
|
||||
FormFieldController<String>? radioButtonValueController;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode9;
|
||||
TextEditingController? textController9;
|
||||
String? Function(BuildContext, String?)? textController9Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode10;
|
||||
TextEditingController? textController10;
|
||||
String? Function(BuildContext, String?)? textController10Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode11;
|
||||
TextEditingController? textController11;
|
||||
String? Function(BuildContext, String?)? textController11Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode12;
|
||||
TextEditingController? textController12;
|
||||
String? Function(BuildContext, String?)? textController12Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode13;
|
||||
TextEditingController? textController13;
|
||||
String? Function(BuildContext, String?)? textController13Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
textFieldFocusNode9?.dispose();
|
||||
textController9?.dispose();
|
||||
|
||||
textFieldFocusNode10?.dispose();
|
||||
textController10?.dispose();
|
||||
|
||||
textFieldFocusNode11?.dispose();
|
||||
textController11?.dispose();
|
||||
|
||||
textFieldFocusNode12?.dispose();
|
||||
textController12?.dispose();
|
||||
|
||||
textFieldFocusNode13?.dispose();
|
||||
textController13?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
|
||||
String? get radioButtonValue => radioButtonValueController?.value;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_changename_widget.dart' show CompsecChangenameWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecChangenameModel extends FlutterModel<CompsecChangenameWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1473
lib/comp_sec_serv/compsec_changename/compsec_changename_widget.dart
Normal file
1473
lib/comp_sec_serv/compsec_changename/compsec_changename_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,118 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_changesecr_o_rdir_widget.dart'
|
||||
show CompsecChangesecrORdirWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecChangesecrORdirModel
|
||||
extends FlutterModel<CompsecChangesecrORdirWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode9;
|
||||
TextEditingController? textController9;
|
||||
String? Function(BuildContext, String?)? textController9Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode10;
|
||||
TextEditingController? textController10;
|
||||
String? Function(BuildContext, String?)? textController10Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode11;
|
||||
TextEditingController? textController11;
|
||||
String? Function(BuildContext, String?)? textController11Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
textFieldFocusNode9?.dispose();
|
||||
textController9?.dispose();
|
||||
|
||||
textFieldFocusNode10?.dispose();
|
||||
textController10?.dispose();
|
||||
|
||||
textFieldFocusNode11?.dispose();
|
||||
textController11?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,109 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_radio_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'compsec_changesecretary_widget.dart' show CompsecChangesecretaryWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecChangesecretaryModel
|
||||
extends FlutterModel<CompsecChangesecretaryWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for RadioButton widget.
|
||||
FormFieldController<String>? radioButtonValueController;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode9;
|
||||
TextEditingController? textController9;
|
||||
String? Function(BuildContext, String?)? textController9Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
textFieldFocusNode9?.dispose();
|
||||
textController9?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
|
||||
String? get radioButtonValue => radioButtonValueController?.value;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,95 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_checkout_widget.dart' show CompsecCheckoutWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecCheckoutModel extends FlutterModel<CompsecCheckoutWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
2514
lib/comp_sec_serv/compsec_checkout/compsec_checkout_widget.dart
Normal file
2514
lib/comp_sec_serv/compsec_checkout/compsec_checkout_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,39 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_checkout1_widget.dart' show CompsecCheckout1Widget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecCheckout1Model extends FlutterModel<CompsecCheckout1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1058
lib/comp_sec_serv/compsec_checkout1/compsec_checkout1_widget.dart
Normal file
1058
lib/comp_sec_serv/compsec_checkout1/compsec_checkout1_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,38 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_checkout2_widget.dart' show CompsecCheckout2Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecCheckout2Model extends FlutterModel<CompsecCheckout2Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
@@ -0,0 +1,814 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_checkout2_model.dart';
|
||||
export 'compsec_checkout2_model.dart';
|
||||
|
||||
class CompsecCheckout2Widget extends StatefulWidget {
|
||||
const CompsecCheckout2Widget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecCheckout2WidgetState createState() => _CompsecCheckout2WidgetState();
|
||||
}
|
||||
|
||||
class _CompsecCheckout2WidgetState extends State<CompsecCheckout2Widget> {
|
||||
late CompsecCheckout2Model _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecCheckout2Model());
|
||||
}
|
||||
|
||||
@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(
|
||||
'cuod19rg' /* 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(
|
||||
'nh2dytrk' /* 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(
|
||||
'ksj504qd' /* 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(
|
||||
'dejr7ecw' /* 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(
|
||||
'on5846b0' /* 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(
|
||||
'iyiqp437' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 0.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Container(
|
||||
width: 358.0,
|
||||
height: 340.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
borderRadius: BorderRadius.circular(0.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Container(
|
||||
width: 358.0,
|
||||
height: 50.0,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Color(0xFF7DB979),
|
||||
Color(0xFF26BBAA)
|
||||
],
|
||||
stops: [0.0, 1.0],
|
||||
begin: AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
end: AlignmentDirectional(1.0, 0),
|
||||
),
|
||||
),
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'exuucygx' /* Checkout */,
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Roboto',
|
||||
color: Colors.white,
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0, 10.0, 0.0, 16.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'pld3713b' /* Cart Summary */,
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 10.0, 0.0, 16.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/tick-circle.svg',
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'gcuwo4ha' /* Payment failed */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'0nzqpt8d' /* Your payment was not successfu... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style:
|
||||
FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 24.0, 10.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 10.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context)
|
||||
.getText(
|
||||
'si3kr37t' /* Back */,
|
||||
),
|
||||
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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context)
|
||||
.getText(
|
||||
'35pmsilb' /* Try again */,
|
||||
),
|
||||
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(0xFFF3CF5D),
|
||||
textStyle: FlutterTheme.of(
|
||||
context)
|
||||
.titleSmall
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_digital_trans_list_widget.dart'
|
||||
show CompsecDigitalTransListWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecDigitalTransListModel
|
||||
extends FlutterModel<CompsecDigitalTransListWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
@@ -0,0 +1,995 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_digital_trans_list_model.dart';
|
||||
export 'compsec_digital_trans_list_model.dart';
|
||||
|
||||
class CompsecDigitalTransListWidget extends StatefulWidget {
|
||||
const CompsecDigitalTransListWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecDigitalTransListWidgetState createState() =>
|
||||
_CompsecDigitalTransListWidgetState();
|
||||
}
|
||||
|
||||
class _CompsecDigitalTransListWidgetState
|
||||
extends State<CompsecDigitalTransListWidget> {
|
||||
late CompsecDigitalTransListModel _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecDigitalTransListModel());
|
||||
}
|
||||
|
||||
@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(
|
||||
'yz2l3zvs' /* 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(
|
||||
'6l2w7wu4' /* 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(
|
||||
'mzy1i2yr' /* 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(
|
||||
'yo3lzcce' /* 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(
|
||||
'ij5ea47l' /* 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(
|
||||
'3buniqht' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: SingleChildScrollView(
|
||||
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(
|
||||
'7r2vwrfd' /* Digital Transformation list */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 16.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
18.0, 0.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'3llplg3z' /* Apply for service */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.0,
|
||||
height: 50.0,
|
||||
padding: EdgeInsets.all(0.0),
|
||||
iconPadding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 0.0),
|
||||
color: Color(0xFFF3CF5D),
|
||||
textStyle: FlutterTheme.of(context)
|
||||
.titleSmall
|
||||
.override(
|
||||
fontFamily: 'Roboto',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 18.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('search');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'n9505fuc' /* Document Library */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.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: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Container(
|
||||
width: 358.0,
|
||||
height: 600.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 10.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 328.0,
|
||||
height: 172.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
8.0, 8.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Menu.svg',
|
||||
width: 24.0,
|
||||
height: 24.0,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
8.0, 5.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/XMLID_2001_.svg',
|
||||
width: 45.0,
|
||||
height: 58.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
0.0, -1.0),
|
||||
child: Column(
|
||||
mainAxisSize:
|
||||
MainAxisSize.max,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment
|
||||
.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize:
|
||||
MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0,
|
||||
0.0,
|
||||
0.0,
|
||||
5.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'9py0zgub' /* DCE Food Delivery Ltd_2... */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize:
|
||||
16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize:
|
||||
MainAxisSize
|
||||
.max,
|
||||
children: [
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
-1.0,
|
||||
0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0,
|
||||
0.0,
|
||||
0.0,
|
||||
5.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'lik6hpca' /* Bank statement */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize:
|
||||
16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0,
|
||||
0.0,
|
||||
0.0,
|
||||
5.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'ighuxkoa' /* CI */,
|
||||
),
|
||||
style: FlutterTheme
|
||||
.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize:
|
||||
16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize:
|
||||
MainAxisSize.max,
|
||||
children: [
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
-1.0,
|
||||
0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0,
|
||||
0.0,
|
||||
0.0,
|
||||
0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'3smqrf5a' /* Submitted */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color: Color(
|
||||
0xFF364257),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
0.0,
|
||||
0.0,
|
||||
8.0,
|
||||
0.0),
|
||||
child: Container(
|
||||
width: 34.0,
|
||||
height: 34.0,
|
||||
decoration:
|
||||
BoxDecoration(
|
||||
color:
|
||||
Color(0xFF009B9A),
|
||||
shape:
|
||||
BoxShape.circle,
|
||||
),
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
0.0, 0.0),
|
||||
child: Icon(
|
||||
Icons
|
||||
.remove_red_eye_outlined,
|
||||
color: Colors.white,
|
||||
size: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.end,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
0.0,
|
||||
0.0,
|
||||
10.0,
|
||||
0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'2kcz55ij' /* 20230515-13:36 */,
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
43
lib/comp_sec_serv/compsec_enq/compsec_enq_model.dart
Normal file
43
lib/comp_sec_serv/compsec_enq/compsec_enq_model.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_choice_chips.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'compsec_enq_widget.dart' show CompsecEnqWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecEnqModel extends FlutterModel<CompsecEnqWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for ChoiceChips widget.
|
||||
String? choiceChipsValue;
|
||||
FormFieldController<List<String>>? choiceChipsValueController;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
895
lib/comp_sec_serv/compsec_enq/compsec_enq_widget.dart
Normal file
895
lib/comp_sec_serv/compsec_enq/compsec_enq_widget.dart
Normal file
@@ -0,0 +1,895 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_choice_chips.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_enq_model.dart';
|
||||
export 'compsec_enq_model.dart';
|
||||
|
||||
class CompsecEnqWidget extends StatefulWidget {
|
||||
const CompsecEnqWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecEnqWidgetState createState() => _CompsecEnqWidgetState();
|
||||
}
|
||||
|
||||
class _CompsecEnqWidgetState extends State<CompsecEnqWidget> {
|
||||
late CompsecEnqModel _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecEnqModel());
|
||||
}
|
||||
|
||||
@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(
|
||||
'oyzkh00k' /* 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(
|
||||
'ibo2wafo' /* 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(
|
||||
'3d5b5kuh' /* 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(
|
||||
'862af5n0' /* 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(
|
||||
'ug9n7vaz' /* 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(
|
||||
'z7m25utr' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: SingleChildScrollView(
|
||||
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(
|
||||
'mmg5480g' /* Company Secretary Enquiry hist... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 16.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
18.0, 0.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'et90l2xu' /* Apply for service */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.0,
|
||||
height: 50.0,
|
||||
padding: EdgeInsets.all(0.0),
|
||||
iconPadding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 0.0),
|
||||
color: Color(0xFFF3CF5D),
|
||||
textStyle: FlutterTheme.of(context)
|
||||
.titleSmall
|
||||
.override(
|
||||
fontFamily: 'Roboto',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 18.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('search');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'kqyv3p7r' /* Document Library */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.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: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: () {
|
||||
if (MediaQuery.sizeOf(context).width < 428.0) {
|
||||
return 328.0;
|
||||
} else if (MediaQuery.sizeOf(context).width >=
|
||||
428.0) {
|
||||
return 358.0;
|
||||
} else {
|
||||
return 338.0;
|
||||
}
|
||||
}(),
|
||||
height: 160.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
8.0, 14.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0, 0.0, 0.0, 5.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'7bc9dudd' /* Other services request1 */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color:
|
||||
Color(0xFF364257),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Align(
|
||||
alignment: AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
10.0,
|
||||
0.0,
|
||||
0.0,
|
||||
5.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'h780bz89' /* Submitted date 2023/05/23 15:5... */,
|
||||
),
|
||||
style: FlutterTheme
|
||||
.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color: Color(
|
||||
0xFF6D7581),
|
||||
fontSize: 14.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
0.0, 0.0, 10.0, 0.0),
|
||||
child: Icon(
|
||||
Icons.search,
|
||||
color: Color(0xFF009B9A),
|
||||
size: 30.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.end,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
15.0, 0.0, 0.0, 17.0),
|
||||
child: FlutterChoiceChips(
|
||||
options: [
|
||||
ChipData(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'nq1xhsvx' /* Waiting for reply */,
|
||||
))
|
||||
],
|
||||
onChanged: (val) => setState(() =>
|
||||
_model.choiceChipsValue =
|
||||
val?.first),
|
||||
selectedChipStyle: ChipStyle(
|
||||
backgroundColor:
|
||||
Color(0xFFD6DEE9),
|
||||
textStyle: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.primaryText,
|
||||
),
|
||||
iconColor:
|
||||
FlutterTheme.of(context)
|
||||
.primaryText,
|
||||
iconSize: 18.0,
|
||||
elevation: 4.0,
|
||||
borderRadius:
|
||||
BorderRadius.circular(16.0),
|
||||
),
|
||||
unselectedChipStyle: ChipStyle(
|
||||
backgroundColor:
|
||||
Color(0xFFD6DEE9),
|
||||
textStyle: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.secondaryText,
|
||||
),
|
||||
iconColor:
|
||||
FlutterTheme.of(context)
|
||||
.secondaryText,
|
||||
iconSize: 18.0,
|
||||
elevation: 0.0,
|
||||
borderRadius:
|
||||
BorderRadius.circular(16.0),
|
||||
),
|
||||
chipSpacing: 12.0,
|
||||
rowSpacing: 12.0,
|
||||
multiselect: false,
|
||||
alignment: WrapAlignment.start,
|
||||
controller: _model
|
||||
.choiceChipsValueController ??=
|
||||
FormFieldController<
|
||||
List<String>>(
|
||||
[],
|
||||
),
|
||||
wrapped: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
43
lib/comp_sec_serv/compsec_enq1/compsec_enq1_model.dart
Normal file
43
lib/comp_sec_serv/compsec_enq1/compsec_enq1_model.dart
Normal file
@@ -0,0 +1,43 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_choice_chips.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'compsec_enq1_widget.dart' show CompsecEnq1Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecEnq1Model extends FlutterModel<CompsecEnq1Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for ChoiceChips widget.
|
||||
String? choiceChipsValue;
|
||||
FormFieldController<List<String>>? choiceChipsValueController;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
859
lib/comp_sec_serv/compsec_enq1/compsec_enq1_widget.dart
Normal file
859
lib/comp_sec_serv/compsec_enq1/compsec_enq1_widget.dart
Normal file
@@ -0,0 +1,859 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_choice_chips.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_enq1_model.dart';
|
||||
export 'compsec_enq1_model.dart';
|
||||
|
||||
class CompsecEnq1Widget extends StatefulWidget {
|
||||
const CompsecEnq1Widget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecEnq1WidgetState createState() => _CompsecEnq1WidgetState();
|
||||
}
|
||||
|
||||
class _CompsecEnq1WidgetState extends State<CompsecEnq1Widget> {
|
||||
late CompsecEnq1Model _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecEnq1Model());
|
||||
}
|
||||
|
||||
@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(
|
||||
'933rdayx' /* 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(
|
||||
'ieo0d4gw' /* 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(
|
||||
'bjnac0xr' /* 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(
|
||||
'svctquyo' /* 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(
|
||||
'wbe7559x' /* 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(
|
||||
'gksndkrp' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Stack(
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Container(
|
||||
width: 358.0,
|
||||
height: 700.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
borderRadius: BorderRadius.circular(0.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Container(
|
||||
width: 358.0,
|
||||
height: 50.0,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Color(0xFF7DB979),
|
||||
Color(0xFF26BBAA)
|
||||
],
|
||||
stops: [0.0, 1.0],
|
||||
begin: AlignmentDirectional(
|
||||
-1.0, 0.0),
|
||||
end: AlignmentDirectional(
|
||||
1.0, 0),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(0.0, 0.0,
|
||||
13.66, 0.0),
|
||||
child: ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Frame_2609120.svg',
|
||||
width: 32.0,
|
||||
height: 32.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'nzy2s88n' /* Enquiry history */,
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Roboto',
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 19.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment:
|
||||
AlignmentDirectional(
|
||||
1.0, 0.0),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional
|
||||
.fromSTEB(0.0, 0.0,
|
||||
15.0, 0.0),
|
||||
child:
|
||||
FlutterChoiceChips(
|
||||
options: [
|
||||
ChipData(
|
||||
FFLocalizations.of(
|
||||
context)
|
||||
.getText(
|
||||
'xm7e82s1' /* Completed */,
|
||||
))
|
||||
],
|
||||
onChanged: (val) =>
|
||||
setState(() => _model
|
||||
.choiceChipsValue =
|
||||
val?.first),
|
||||
selectedChipStyle:
|
||||
ChipStyle(
|
||||
backgroundColor:
|
||||
Color(0xFFD6DEE9),
|
||||
textStyle:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color: FlutterTheme.of(
|
||||
context)
|
||||
.primaryText,
|
||||
fontSize:
|
||||
20.0,
|
||||
),
|
||||
iconColor:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.primaryText,
|
||||
iconSize: 20.0,
|
||||
elevation: 4.0,
|
||||
borderRadius:
|
||||
BorderRadius
|
||||
.circular(20.0),
|
||||
),
|
||||
unselectedChipStyle:
|
||||
ChipStyle(
|
||||
backgroundColor:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.alternate,
|
||||
textStyle:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color: FlutterTheme.of(
|
||||
context)
|
||||
.secondaryText,
|
||||
),
|
||||
iconColor:
|
||||
FlutterTheme.of(
|
||||
context)
|
||||
.secondaryText,
|
||||
iconSize: 18.0,
|
||||
elevation: 0.0,
|
||||
borderRadius:
|
||||
BorderRadius
|
||||
.circular(16.0),
|
||||
),
|
||||
chipSpacing: 12.0,
|
||||
rowSpacing: 12.0,
|
||||
multiselect: false,
|
||||
alignment:
|
||||
WrapAlignment.start,
|
||||
controller: _model
|
||||
.choiceChipsValueController ??=
|
||||
FormFieldController<
|
||||
List<String>>(
|
||||
[],
|
||||
),
|
||||
wrapped: true,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
15.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'wk82yv8u' /* Other services request1 */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
fontSize: 24.0,
|
||||
decoration:
|
||||
TextDecoration
|
||||
.underline,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 8.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional
|
||||
.fromSTEB(
|
||||
15.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context)
|
||||
.getText(
|
||||
'knc7k4io' /* Submitted date 2023/05/23 15:5... */,
|
||||
),
|
||||
style: FlutterTheme.of(
|
||||
context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily:
|
||||
'Readex Pro',
|
||||
color:
|
||||
Color(0xFF6D7581),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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(0.0, 0.55),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'v4dy23f8' /* Back */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 304.0,
|
||||
height: 54.0,
|
||||
padding: EdgeInsets.all(0.0),
|
||||
iconPadding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
|
||||
color: Color(0xFF9B0025),
|
||||
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(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_other_request_widget.dart' show CompsecOtherRequestWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecOtherRequestModel
|
||||
extends FlutterModel<CompsecOtherRequestWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
@@ -0,0 +1,879 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_other_request_model.dart';
|
||||
export 'compsec_other_request_model.dart';
|
||||
|
||||
class CompsecOtherRequestWidget extends StatefulWidget {
|
||||
const CompsecOtherRequestWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecOtherRequestWidgetState createState() =>
|
||||
_CompsecOtherRequestWidgetState();
|
||||
}
|
||||
|
||||
class _CompsecOtherRequestWidgetState extends State<CompsecOtherRequestWidget> {
|
||||
late CompsecOtherRequestModel _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecOtherRequestModel());
|
||||
|
||||
_model.textController1 ??= TextEditingController();
|
||||
_model.textFieldFocusNode1 ??= FocusNode();
|
||||
|
||||
_model.textController2 ??= TextEditingController();
|
||||
_model.textFieldFocusNode2 ??= FocusNode();
|
||||
}
|
||||
|
||||
@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(
|
||||
'mkohpxfv' /* 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(
|
||||
'fzeavuvg' /* 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(
|
||||
'6ihqi5ko' /* 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(
|
||||
'nxmne69v' /* 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(
|
||||
'w4k8rcij' /* 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(
|
||||
'kd8uzprx' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 16.0, 16.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'f5le6mqi' /* Leave */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 100.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Frame_2609120.svg',
|
||||
width: 117.99,
|
||||
height: 93.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'hesos50v' /* Other Requests */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 358.0,
|
||||
height: 362.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 20.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'37orb00e' /* Please be specific of the enqu... */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 0.0, 12.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'ozxs8zew' /* Enquiry title */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 0.0, 20.0, 0.0),
|
||||
child: TextFormField(
|
||||
controller: _model.textController1,
|
||||
focusNode: _model.textFieldFocusNode1,
|
||||
autofocus: true,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
labelStyle: FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
hintStyle: FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF6D7581),
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: FlutterTheme.of(context)
|
||||
.primary,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context).error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedErrorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context).error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(context).bodyMedium,
|
||||
validator: _model.textController1Validator
|
||||
.asValidator(context),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 20.0, 0.0, 12.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'fpt3ui1p' /* Enquiry details */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
20.0, 0.0, 20.0, 0.0),
|
||||
child: TextFormField(
|
||||
controller: _model.textController2,
|
||||
focusNode: _model.textFieldFocusNode2,
|
||||
autofocus: true,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
labelStyle: FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
hintStyle: FlutterTheme.of(context)
|
||||
.labelMedium,
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF6D7581),
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: FlutterTheme.of(context)
|
||||
.primary,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context).error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
focusedErrorBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color:
|
||||
FlutterTheme.of(context).error,
|
||||
width: 2.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
style:
|
||||
FlutterTheme.of(context).bodyMedium,
|
||||
validator: _model.textController2Validator
|
||||
.asValidator(context),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 24.0, 0.0, 10.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () {
|
||||
print('Button pressed ...');
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'7lu6ghzz' /* Submit */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 339.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
46
lib/comp_sec_serv/compsec_queue/compsec_queue_model.dart
Normal file
46
lib/comp_sec_serv/compsec_queue/compsec_queue_model.dart
Normal file
@@ -0,0 +1,46 @@
|
||||
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 'compsec_queue_widget.dart' show CompsecQueueWidget;
|
||||
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';
|
||||
|
||||
class CompsecQueueModel extends FlutterModel<CompsecQueueWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TabBar widget.
|
||||
TabController? tabBarController;
|
||||
int get tabBarCurrentIndex =>
|
||||
tabBarController != null ? tabBarController!.index : 0;
|
||||
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
tabBarController?.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1386
lib/comp_sec_serv/compsec_queue/compsec_queue_widget.dart
Normal file
1386
lib/comp_sec_serv/compsec_queue/compsec_queue_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_queue11_widget.dart' show CompsecQueue11Widget;
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
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';
|
||||
|
||||
class CompsecQueue11Model extends FlutterModel<CompsecQueue11Widget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1249
lib/comp_sec_serv/compsec_queue1_1/compsec_queue11_widget.dart
Normal file
1249
lib/comp_sec_serv/compsec_queue1_1/compsec_queue11_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,74 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_resignation_widget.dart' show CompsecResignationWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecResignationModel
|
||||
extends FlutterModel<CompsecResignationWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,39 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_servicedraft_widget.dart' show CompsecServicedraftWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecServicedraftModel
|
||||
extends FlutterModel<CompsecServicedraftWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
@@ -0,0 +1,804 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'compsec_servicedraft_model.dart';
|
||||
export 'compsec_servicedraft_model.dart';
|
||||
|
||||
class CompsecServicedraftWidget extends StatefulWidget {
|
||||
const CompsecServicedraftWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_CompsecServicedraftWidgetState createState() =>
|
||||
_CompsecServicedraftWidgetState();
|
||||
}
|
||||
|
||||
class _CompsecServicedraftWidgetState extends State<CompsecServicedraftWidget> {
|
||||
late CompsecServicedraftModel _model;
|
||||
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CompsecServicedraftModel());
|
||||
}
|
||||
|
||||
@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(
|
||||
'xf5i5qfb' /* 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(
|
||||
'ygq8qoi8' /* 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(
|
||||
'xuo7l44g' /* 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(
|
||||
'5brlczli' /* 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(
|
||||
'x6bm8ccv' /* 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(
|
||||
'90ut0raf' /* 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: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 100.0, 0.0, 100.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
|
||||
child: SingleChildScrollView(
|
||||
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(
|
||||
'3z9qrult' /* Company Secretary
|
||||
service dra... */
|
||||
,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 16.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
18.0, 0.0, 0.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('compsec');
|
||||
},
|
||||
text:
|
||||
FFLocalizations.of(context).getText(
|
||||
'vtyrgsm8' /* Apply for service */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.0,
|
||||
height: 50.0,
|
||||
padding: EdgeInsets.all(0.0),
|
||||
iconPadding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 0.0),
|
||||
color: Color(0xFFF3CF5D),
|
||||
textStyle:
|
||||
FlutterTheme.of(context)
|
||||
.titleSmall
|
||||
.override(
|
||||
fontFamily: 'Roboto',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 18.0, 0.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.pushNamed('search');
|
||||
},
|
||||
text:
|
||||
FFLocalizations.of(context).getText(
|
||||
'c9ow45oz' /* Document Library */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 154.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: 16.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius:
|
||||
BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 0.0, 10.0),
|
||||
child: Container(
|
||||
width: () {
|
||||
if (MediaQuery.sizeOf(context).width < 428.0) {
|
||||
return 328.0;
|
||||
} else if (MediaQuery.sizeOf(context).width >=
|
||||
428.0) {
|
||||
return 358.0;
|
||||
} else {
|
||||
return 338.0;
|
||||
}
|
||||
}(),
|
||||
height: 160.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
blurRadius: 4.0,
|
||||
color: Color(0x33000000),
|
||||
offset: Offset(0.0, 2.0),
|
||||
)
|
||||
],
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(0.0),
|
||||
bottomRight: Radius.circular(14.0),
|
||||
topLeft: Radius.circular(14.0),
|
||||
topRight: Radius.circular(0.0),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 14.0, 14.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 17.0, 0.0),
|
||||
child: ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/edit.svg',
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/trash.svg',
|
||||
width: 40.0,
|
||||
height: 40.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
14.0, 13.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'h7c2ipdm' /* Incorporation of
|
||||
Hong Kong Lim... */
|
||||
,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF364257),
|
||||
fontSize: 16.0,
|
||||
decoration:
|
||||
TextDecoration.underline,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
14.0, 8.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'53krgbfj' /* Submitted date 2023/05/23 15:5... */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF6D7581),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'compsec_transferof_shares_widget.dart'
|
||||
show CompsecTransferofSharesWidget;
|
||||
import 'package:styled_divider/styled_divider.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CompsecTransferofSharesModel
|
||||
extends FlutterModel<CompsecTransferofSharesWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode1;
|
||||
TextEditingController? textController1;
|
||||
String? Function(BuildContext, String?)? textController1Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode2;
|
||||
TextEditingController? textController2;
|
||||
String? Function(BuildContext, String?)? textController2Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode3;
|
||||
TextEditingController? textController3;
|
||||
String? Function(BuildContext, String?)? textController3Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode4;
|
||||
TextEditingController? textController4;
|
||||
String? Function(BuildContext, String?)? textController4Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode5;
|
||||
TextEditingController? textController5;
|
||||
String? Function(BuildContext, String?)? textController5Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode6;
|
||||
TextEditingController? textController6;
|
||||
String? Function(BuildContext, String?)? textController6Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode7;
|
||||
TextEditingController? textController7;
|
||||
String? Function(BuildContext, String?)? textController7Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode8;
|
||||
TextEditingController? textController8;
|
||||
String? Function(BuildContext, String?)? textController8Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode9;
|
||||
TextEditingController? textController9;
|
||||
String? Function(BuildContext, String?)? textController9Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode10;
|
||||
TextEditingController? textController10;
|
||||
String? Function(BuildContext, String?)? textController10Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode11;
|
||||
TextEditingController? textController11;
|
||||
String? Function(BuildContext, String?)? textController11Validator;
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode12;
|
||||
TextEditingController? textController12;
|
||||
String? Function(BuildContext, String?)? textController12Validator;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode1?.dispose();
|
||||
textController1?.dispose();
|
||||
|
||||
textFieldFocusNode2?.dispose();
|
||||
textController2?.dispose();
|
||||
|
||||
textFieldFocusNode3?.dispose();
|
||||
textController3?.dispose();
|
||||
|
||||
textFieldFocusNode4?.dispose();
|
||||
textController4?.dispose();
|
||||
|
||||
textFieldFocusNode5?.dispose();
|
||||
textController5?.dispose();
|
||||
|
||||
textFieldFocusNode6?.dispose();
|
||||
textController6?.dispose();
|
||||
|
||||
textFieldFocusNode7?.dispose();
|
||||
textController7?.dispose();
|
||||
|
||||
textFieldFocusNode8?.dispose();
|
||||
textController8?.dispose();
|
||||
|
||||
textFieldFocusNode9?.dispose();
|
||||
textController9?.dispose();
|
||||
|
||||
textFieldFocusNode10?.dispose();
|
||||
textController10?.dispose();
|
||||
|
||||
textFieldFocusNode11?.dispose();
|
||||
textController11?.dispose();
|
||||
|
||||
textFieldFocusNode12?.dispose();
|
||||
textController12?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
55
lib/comp_sec_serv/search/search_model.dart
Normal file
55
lib/comp_sec_serv/search/search_model.dart
Normal file
@@ -0,0 +1,55 @@
|
||||
import '/components/appbar_widget.dart';
|
||||
import '/components/nav_bar1_widget.dart';
|
||||
import '/flutterlib/flutter_drop_down.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import '/flutterlib/form_field_controller.dart';
|
||||
import 'search_widget.dart' show SearchWidget;
|
||||
import 'package:easy_debounce/easy_debounce.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class SearchModel extends FlutterModel<SearchWidget> {
|
||||
/// State fields for stateful widgets in this page.
|
||||
|
||||
final unfocusNode = FocusNode();
|
||||
// State field(s) for TextField widget.
|
||||
FocusNode? textFieldFocusNode;
|
||||
TextEditingController? textController;
|
||||
String? Function(BuildContext, String?)? textControllerValidator;
|
||||
// State field(s) for DropDown widget.
|
||||
String? dropDownValue;
|
||||
FormFieldController<String>? dropDownValueController;
|
||||
// State field(s) for CheckboxListTile widget.
|
||||
bool? checkboxListTileValue;
|
||||
// State field(s) for Checkbox widget.
|
||||
bool? checkboxValue;
|
||||
// Model for NavBar1 component.
|
||||
late NavBar1Model navBar1Model;
|
||||
// Model for appbar component.
|
||||
late AppbarModel appbarModel;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {
|
||||
navBar1Model = createModel(context, () => NavBar1Model());
|
||||
appbarModel = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unfocusNode.dispose();
|
||||
textFieldFocusNode?.dispose();
|
||||
textController?.dispose();
|
||||
|
||||
navBar1Model.dispose();
|
||||
appbarModel.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
1245
lib/comp_sec_serv/search/search_widget.dart
Normal file
1245
lib/comp_sec_serv/search/search_widget.dart
Normal file
File diff suppressed because it is too large
Load Diff
20
lib/components/alert_box_custom_model.dart
Normal file
20
lib/components/alert_box_custom_model.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'alert_box_custom_widget.dart' show AlertBoxCustomWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class AlertBoxCustomModel extends FlutterModel<AlertBoxCustomWidget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
20
lib/components/alert_box_custom_o_k_model.dart
Normal file
20
lib/components/alert_box_custom_o_k_model.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'alert_box_custom_o_k_widget.dart' show AlertBoxCustomOKWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class AlertBoxCustomOKModel extends FlutterModel<AlertBoxCustomOKWidget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
115
lib/components/alert_box_custom_o_k_widget.dart
Normal file
115
lib/components/alert_box_custom_o_k_widget.dart
Normal file
@@ -0,0 +1,115 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'alert_box_custom_o_k_model.dart';
|
||||
export 'alert_box_custom_o_k_model.dart';
|
||||
|
||||
class AlertBoxCustomOKWidget extends StatefulWidget {
|
||||
const AlertBoxCustomOKWidget({
|
||||
Key? key,
|
||||
this.text,
|
||||
}) : super(key: key);
|
||||
|
||||
final String? text;
|
||||
|
||||
@override
|
||||
_AlertBoxCustomOKWidgetState createState() => _AlertBoxCustomOKWidgetState();
|
||||
}
|
||||
|
||||
class _AlertBoxCustomOKWidgetState extends State<AlertBoxCustomOKWidget> {
|
||||
late AlertBoxCustomOKModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => AlertBoxCustomOKModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Container(
|
||||
width: 339.0,
|
||||
height: 192.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context).secondaryBackground,
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 24.0, 0.0),
|
||||
child: Text(
|
||||
widget.text!,
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context).bodyMedium.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 1.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 24.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'3jiglf6t' /* OK */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 304.0,
|
||||
height: 54.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
115
lib/components/alert_box_custom_widget.dart
Normal file
115
lib/components/alert_box_custom_widget.dart
Normal file
@@ -0,0 +1,115 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'alert_box_custom_model.dart';
|
||||
export 'alert_box_custom_model.dart';
|
||||
|
||||
class AlertBoxCustomWidget extends StatefulWidget {
|
||||
const AlertBoxCustomWidget({
|
||||
Key? key,
|
||||
this.text,
|
||||
}) : super(key: key);
|
||||
|
||||
final String? text;
|
||||
|
||||
@override
|
||||
_AlertBoxCustomWidgetState createState() => _AlertBoxCustomWidgetState();
|
||||
}
|
||||
|
||||
class _AlertBoxCustomWidgetState extends State<AlertBoxCustomWidget> {
|
||||
late AlertBoxCustomModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => AlertBoxCustomModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Container(
|
||||
width: 339.0,
|
||||
height: 192.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context).secondaryBackground,
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 24.0, 0.0),
|
||||
child: Text(
|
||||
widget.text!,
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context).bodyMedium.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 1.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 24.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.safePop();
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'4g627wq8' /* Back */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 304.0,
|
||||
height: 54.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
20
lib/components/alert_box_model.dart
Normal file
20
lib/components/alert_box_model.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'alert_box_widget.dart' show AlertBoxWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class AlertBoxModel extends FlutterModel<AlertBoxWidget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
112
lib/components/alert_box_widget.dart
Normal file
112
lib/components/alert_box_widget.dart
Normal file
@@ -0,0 +1,112 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/flutter_widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'alert_box_model.dart';
|
||||
export 'alert_box_model.dart';
|
||||
|
||||
class AlertBoxWidget extends StatefulWidget {
|
||||
const AlertBoxWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AlertBoxWidgetState createState() => _AlertBoxWidgetState();
|
||||
}
|
||||
|
||||
class _AlertBoxWidgetState extends State<AlertBoxWidget> {
|
||||
late AlertBoxModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => AlertBoxModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Container(
|
||||
width: 339.0,
|
||||
height: 192.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context).secondaryBackground,
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 24.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'7e2m047k' /* The new password confirmation ... */,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context).bodyMedium.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(0.0, 1.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 24.0),
|
||||
child: FFButtonWidget(
|
||||
onPressed: () async {
|
||||
context.safePop();
|
||||
},
|
||||
text: FFLocalizations.of(context).getText(
|
||||
'ngpsorqk' /* Back */,
|
||||
),
|
||||
options: FFButtonOptions(
|
||||
width: 304.0,
|
||||
height: 54.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,
|
||||
fontSize: 20.0,
|
||||
),
|
||||
elevation: 3.0,
|
||||
borderSide: BorderSide(
|
||||
color: Colors.transparent,
|
||||
width: 1.0,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(40.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
21
lib/components/appbar_model.dart
Normal file
21
lib/components/appbar_model.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'appbar_widget.dart' show AppbarWidget;
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class AppbarModel extends FlutterModel<AppbarWidget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
142
lib/components/appbar_widget.dart
Normal file
142
lib/components/appbar_widget.dart
Normal file
@@ -0,0 +1,142 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'appbar_model.dart';
|
||||
export 'appbar_model.dart';
|
||||
|
||||
class AppbarWidget extends StatefulWidget {
|
||||
const AppbarWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_AppbarWidgetState createState() => _AppbarWidgetState();
|
||||
}
|
||||
|
||||
class _AppbarWidgetState extends State<AppbarWidget> {
|
||||
late AppbarModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => AppbarModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
height: 105.0,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [Color(0xFFE7E63B), Color(0xFFC6E6D7)],
|
||||
stops: [0.0, 1.0],
|
||||
begin: AlignmentDirectional(0.0, -1.0),
|
||||
end: AlignmentDirectional(0, 1.0),
|
||||
),
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(40.0),
|
||||
bottomRight: Radius.circular(40.0),
|
||||
topLeft: Radius.circular(0.0),
|
||||
topRight: Radius.circular(0.0),
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 20.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(-1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 0.0, 0.0),
|
||||
child: InkWell(
|
||||
splashColor: Colors.transparent,
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
onTap: () async {
|
||||
Scaffold.of(context).openDrawer();
|
||||
},
|
||||
child: Icon(
|
||||
Icons.density_medium_sharp,
|
||||
color: FlutterTheme.of(context).secondaryText,
|
||||
size: 30.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: Image.asset(
|
||||
'assets/images/numstat+black_1.png',
|
||||
width: 61.0,
|
||||
height: 61.0,
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 20.0, 0.0),
|
||||
child: badges.Badge(
|
||||
badgeContent: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'trn1lsym' /* 1 */,
|
||||
),
|
||||
style: FlutterTheme.of(context).titleSmall.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Colors.white,
|
||||
fontSize: 10.0,
|
||||
),
|
||||
),
|
||||
showBadge: true,
|
||||
shape: badges.BadgeShape.circle,
|
||||
badgeColor: Color(0xFFFF0000),
|
||||
elevation: 4.0,
|
||||
padding: EdgeInsets.all(8.0),
|
||||
position: badges.BadgePosition.topEnd(),
|
||||
animationType: badges.BadgeAnimationType.scale,
|
||||
toAnimate: true,
|
||||
child: InkWell(
|
||||
splashColor: Colors.transparent,
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
onTap: () async {
|
||||
context.pushNamed('notification');
|
||||
},
|
||||
child: FaIcon(
|
||||
FontAwesomeIcons.bell,
|
||||
color: FlutterTheme.of(context).secondaryText,
|
||||
size: 30.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
27
lib/components/chat_box_model.dart
Normal file
27
lib/components/chat_box_model.dart
Normal file
@@ -0,0 +1,27 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'chat_box_widget.dart' show ChatBoxWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class ChatBoxModel extends FlutterModel<ChatBoxWidget> {
|
||||
/// State fields for stateful widgets in this component.
|
||||
|
||||
// State field(s) for MouseRegion widget.
|
||||
bool mouseRegionHovered1 = false;
|
||||
// State field(s) for MouseRegion widget.
|
||||
bool mouseRegionHovered2 = false;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
299
lib/components/chat_box_widget.dart
Normal file
299
lib/components/chat_box_widget.dart
Normal file
@@ -0,0 +1,299 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'chat_box_model.dart';
|
||||
export 'chat_box_model.dart';
|
||||
|
||||
class ChatBoxWidget extends StatefulWidget {
|
||||
const ChatBoxWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_ChatBoxWidgetState createState() => _ChatBoxWidgetState();
|
||||
}
|
||||
|
||||
class _ChatBoxWidgetState extends State<ChatBoxWidget> {
|
||||
late ChatBoxModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => ChatBoxModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Align(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
child: Stack(
|
||||
alignment: AlignmentDirectional(0.0, 0.0),
|
||||
children: [
|
||||
Align(
|
||||
alignment: AlignmentDirectional(1.07, 0.5),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 30.0, 0.0),
|
||||
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: MouseRegion(
|
||||
opaque: false,
|
||||
cursor: SystemMouseCursors.click ?? MouseCursor.defer,
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/message-2.svg',
|
||||
width: 100.0,
|
||||
height: 100.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
onEnter: ((event) async {
|
||||
setState(() => _model.mouseRegionHovered1 = true);
|
||||
setState(() {
|
||||
FFAppState().showChat = true;
|
||||
});
|
||||
}),
|
||||
onExit: ((event) async {
|
||||
setState(() => _model.mouseRegionHovered1 = false);
|
||||
setState(() {
|
||||
FFAppState().showChat = false;
|
||||
});
|
||||
}),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
if (FFAppState().showChat)
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 30.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 335.0,
|
||||
height: 600.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFF009B9A),
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(0.0),
|
||||
bottomRight: Radius.circular(0.0),
|
||||
topLeft: Radius.circular(40.0),
|
||||
topRight: Radius.circular(40.0),
|
||||
),
|
||||
),
|
||||
child: MouseRegion(
|
||||
opaque: false,
|
||||
cursor: SystemMouseCursors.click ?? MouseCursor.defer,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/whitemessage.svg',
|
||||
width: 61.0,
|
||||
height: 72.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
10.0, 0.0, 0.0, 0.0),
|
||||
child: Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'sgf4j0rn' /* How we can help? */,
|
||||
),
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFFEBEBE4),
|
||||
fontSize: 24.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'lbw8sqrb' /* Send us a message and
|
||||
we will... */
|
||||
,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
style: FlutterTheme.of(context)
|
||||
.bodyMedium
|
||||
.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFFEBEBE4),
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 30.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 300.0,
|
||||
height: 85.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(0.0),
|
||||
bottomRight: Radius.circular(40.0),
|
||||
topLeft: Radius.circular(40.0),
|
||||
topRight: Radius.circular(0.0),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/bk.svg',
|
||||
width: 100.0,
|
||||
height: 100.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'ltzjffri' /* Bookkeeping Service */,
|
||||
),
|
||||
style: FlutterTheme.of(context).bodyMedium,
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 20.0, 0.0),
|
||||
child: Icon(
|
||||
Icons.arrow_forward_ios,
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryText,
|
||||
size: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsetsDirectional.fromSTEB(0.0, 30.0, 0.0, 0.0),
|
||||
child: Container(
|
||||
width: 300.0,
|
||||
height: 85.0,
|
||||
decoration: BoxDecoration(
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryBackground,
|
||||
borderRadius: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(0.0),
|
||||
bottomRight: Radius.circular(40.0),
|
||||
topLeft: Radius.circular(40.0),
|
||||
topRight: Radius.circular(0.0),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/chat.svg',
|
||||
width: 100.0,
|
||||
height: 100.0,
|
||||
fit: BoxFit.none,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
FFLocalizations.of(context).getText(
|
||||
'amerkqzb' /* Company Secretary
|
||||
Service */
|
||||
,
|
||||
),
|
||||
style: FlutterTheme.of(context).bodyMedium,
|
||||
),
|
||||
Expanded(
|
||||
child: Align(
|
||||
alignment: AlignmentDirectional(1.0, 0.0),
|
||||
child: Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(
|
||||
0.0, 0.0, 20.0, 0.0),
|
||||
child: Icon(
|
||||
Icons.arrow_forward_ios,
|
||||
color: FlutterTheme.of(context)
|
||||
.secondaryText,
|
||||
size: 16.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
onEnter: ((event) async {
|
||||
setState(() => _model.mouseRegionHovered2 = true);
|
||||
setState(() {
|
||||
FFAppState().showChat = true;
|
||||
});
|
||||
}),
|
||||
onExit: ((event) async {
|
||||
setState(() => _model.mouseRegionHovered2 = false);
|
||||
setState(() {
|
||||
FFAppState().showChat = false;
|
||||
});
|
||||
}),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
25
lib/components/checkbox_model.dart
Normal file
25
lib/components/checkbox_model.dart
Normal file
@@ -0,0 +1,25 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'checkbox_widget.dart' show CheckboxWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CheckboxModel extends FlutterModel<CheckboxWidget> {
|
||||
/// State fields for stateful widgets in this component.
|
||||
|
||||
// State field(s) for checkbox widget.
|
||||
bool? checkboxValue;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
102
lib/components/checkbox_widget.dart
Normal file
102
lib/components/checkbox_widget.dart
Normal file
@@ -0,0 +1,102 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'checkbox_model.dart';
|
||||
export 'checkbox_model.dart';
|
||||
|
||||
class CheckboxWidget extends StatefulWidget {
|
||||
const CheckboxWidget({
|
||||
Key? key,
|
||||
this.permissionList,
|
||||
this.getPermissions,
|
||||
}) : super(key: key);
|
||||
|
||||
final dynamic permissionList;
|
||||
final List<int>? getPermissions;
|
||||
|
||||
@override
|
||||
_CheckboxWidgetState createState() => _CheckboxWidgetState();
|
||||
}
|
||||
|
||||
class _CheckboxWidgetState extends State<CheckboxWidget> {
|
||||
late CheckboxModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => CheckboxModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return Theme(
|
||||
data: ThemeData(
|
||||
checkboxTheme: CheckboxThemeData(
|
||||
visualDensity: VisualDensity.standard,
|
||||
materialTapTargetSize: MaterialTapTargetSize.padded,
|
||||
),
|
||||
unselectedWidgetColor: FlutterTheme.of(context).secondaryText,
|
||||
),
|
||||
child: CheckboxListTile(
|
||||
value: _model.checkboxValue ??= functions.comparePermission(
|
||||
widget.getPermissions!.toList(),
|
||||
getJsonField(
|
||||
widget.permissionList,
|
||||
r'''$.id''',
|
||||
)),
|
||||
onChanged: (newValue) async {
|
||||
setState(() => _model.checkboxValue = newValue!);
|
||||
if (newValue!) {
|
||||
FFAppState().update(() {
|
||||
FFAppState().addToAddPermissionsID(getJsonField(
|
||||
widget.permissionList,
|
||||
r'''$.id''',
|
||||
).toString());
|
||||
});
|
||||
} else {
|
||||
FFAppState().update(() {
|
||||
FFAppState().addToRemovePermissionsID(getJsonField(
|
||||
widget.permissionList,
|
||||
r'''$.id''',
|
||||
).toString());
|
||||
});
|
||||
}
|
||||
},
|
||||
title: Text(
|
||||
getJsonField(
|
||||
widget.permissionList,
|
||||
r'''$.display_name''',
|
||||
).toString(),
|
||||
style: FlutterTheme.of(context).titleLarge.override(
|
||||
fontFamily: 'Outfit',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
),
|
||||
tileColor: Colors.black,
|
||||
activeColor: Colors.white,
|
||||
checkColor: Colors.black,
|
||||
dense: false,
|
||||
controlAffinity: ListTileControlAffinity.trailing,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
33
lib/components/date_model.dart
Normal file
33
lib/components/date_model.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'date_widget.dart' show DateWidget;
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class DateModel extends FlutterModel<DateWidget> {
|
||||
/// State fields for stateful widgets in this component.
|
||||
|
||||
// State field(s) for date widget.
|
||||
FocusNode? dateFocusNode;
|
||||
TextEditingController? dateController;
|
||||
String? Function(BuildContext, String?)? dateControllerValidator;
|
||||
DateTime? datePicked;
|
||||
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {
|
||||
dateFocusNode?.dispose();
|
||||
dateController?.dispose();
|
||||
}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
154
lib/components/date_widget.dart
Normal file
154
lib/components/date_widget.dart
Normal file
@@ -0,0 +1,154 @@
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import '/flutterlib/custom_functions.dart' as functions;
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'date_model.dart';
|
||||
export 'date_model.dart';
|
||||
|
||||
class DateWidget extends StatefulWidget {
|
||||
const DateWidget({
|
||||
Key? key,
|
||||
this.companyMembers,
|
||||
}) : super(key: key);
|
||||
|
||||
final dynamic companyMembers;
|
||||
|
||||
@override
|
||||
_DateWidgetState createState() => _DateWidgetState();
|
||||
}
|
||||
|
||||
class _DateWidgetState extends State<DateWidget> {
|
||||
late DateModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => DateModel());
|
||||
|
||||
_model.dateController ??= TextEditingController();
|
||||
_model.dateFocusNode ??= FocusNode();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return 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.dateController,
|
||||
focusNode: _model.dateFocusNode,
|
||||
textCapitalization: TextCapitalization.none,
|
||||
readOnly: true,
|
||||
obscureText: false,
|
||||
decoration: InputDecoration(
|
||||
hintText: FFLocalizations.of(context).getText(
|
||||
'q97i0ohq' /* YYYY/MM/DD */,
|
||||
),
|
||||
hintStyle: FlutterTheme.of(context).labelMedium,
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Color(0xFF6D7581),
|
||||
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),
|
||||
),
|
||||
filled: true,
|
||||
fillColor: Colors.white,
|
||||
),
|
||||
style: FlutterTheme.of(context).bodyMedium.override(
|
||||
fontFamily: 'Readex Pro',
|
||||
fontSize: 16.0,
|
||||
),
|
||||
keyboardType: TextInputType.datetime,
|
||||
validator: _model.dateControllerValidator.asValidator(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 8.0, 0.0),
|
||||
child: FlutterIconButton(
|
||||
borderColor: FlutterTheme.of(context).primaryText,
|
||||
borderRadius: 20.0,
|
||||
borderWidth: 1.0,
|
||||
buttonSize: 40.0,
|
||||
fillColor: FlutterTheme.of(context).secondaryBackground,
|
||||
icon: Icon(
|
||||
Icons.calendar_month,
|
||||
color: FlutterTheme.of(context).primaryText,
|
||||
size: 24.0,
|
||||
),
|
||||
onPressed: () async {
|
||||
final _datePickedDate = await showDatePicker(
|
||||
context: context,
|
||||
initialDate: getCurrentTimestamp,
|
||||
firstDate: DateTime(1900),
|
||||
lastDate: getCurrentTimestamp,
|
||||
);
|
||||
|
||||
if (_datePickedDate != null) {
|
||||
safeSetState(() {
|
||||
_model.datePicked = DateTime(
|
||||
_datePickedDate.year,
|
||||
_datePickedDate.month,
|
||||
_datePickedDate.day,
|
||||
);
|
||||
});
|
||||
}
|
||||
setState(() {
|
||||
_model.dateController?.text =
|
||||
functions.formatDate(_model.datePicked!.toString());
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
20
lib/components/emptylist_model.dart
Normal file
20
lib/components/emptylist_model.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'emptylist_widget.dart' show EmptylistWidget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class EmptylistModel extends FlutterModel<EmptylistWidget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
54
lib/components/emptylist_widget.dart
Normal file
54
lib/components/emptylist_widget.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'emptylist_model.dart';
|
||||
export 'emptylist_model.dart';
|
||||
|
||||
class EmptylistWidget extends StatefulWidget {
|
||||
const EmptylistWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_EmptylistWidgetState createState() => _EmptylistWidgetState();
|
||||
}
|
||||
|
||||
class _EmptylistWidgetState extends State<EmptylistWidget> {
|
||||
late EmptylistModel _model;
|
||||
|
||||
@override
|
||||
void setState(VoidCallback callback) {
|
||||
super.setState(callback);
|
||||
_model.onUpdate();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_model = createModel(context, () => EmptylistModel());
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_model.maybeDispose();
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
context.watch<FFAppState>();
|
||||
|
||||
return ClipRRect(
|
||||
borderRadius: BorderRadius.circular(8.0),
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/Empty_List_Icon.svg',
|
||||
width: 358.0,
|
||||
height: 277.0,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
21
lib/components/nav_bar1_model.dart
Normal file
21
lib/components/nav_bar1_model.dart
Normal file
@@ -0,0 +1,21 @@
|
||||
import '/flutterlib/flutter_icon_button.dart';
|
||||
import '/flutterlib/flutter_theme.dart';
|
||||
import '/flutterlib/flutter_util.dart';
|
||||
import 'nav_bar1_widget.dart' show NavBar1Widget;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class NavBar1Model extends FlutterModel<NavBar1Widget> {
|
||||
/// Initialization and disposal methods.
|
||||
|
||||
void initState(BuildContext context) {}
|
||||
|
||||
void dispose() {}
|
||||
|
||||
/// Action blocks are added here.
|
||||
|
||||
/// Additional helper methods are added here.
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user