Files
numstation-flutter/lib/testing/testing_widget.dart

572 lines
22 KiB
Dart
Raw Permalink Normal View History

2023-12-27 16:10:09 +08:00
import '/components/alert_box_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:flutter_svg/flutter_svg.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'testing_model.dart';
export 'testing_model.dart';
class TestingWidget extends StatefulWidget {
const TestingWidget({Key? key}) : super(key: key);
@override
_TestingWidgetState createState() => _TestingWidgetState();
}
class _TestingWidgetState extends State<TestingWidget> {
late TestingModel _model;
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
_model = createModel(context, () => TestingModel());
}
@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: AppBar(
backgroundColor: FlutterTheme.of(context).primary,
automaticallyImplyLeading: false,
leading: FlutterIconButton(
borderColor: Colors.transparent,
borderRadius: 30.0,
borderWidth: 1.0,
buttonSize: 60.0,
icon: Icon(
Icons.arrow_back_rounded,
color: Colors.white,
size: 30.0,
),
onPressed: () async {
context.pop();
},
),
title: Text(
FFLocalizations.of(context).getText(
'sa3buhmc' /* Page Title */,
),
style: FlutterTheme.of(context).headlineMedium.override(
fontFamily: 'Outfit',
color: Colors.white,
fontSize: 22.0,
),
),
actions: [],
centerTitle: false,
elevation: 0.0,
),
body: SafeArea(
top: true,
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
],
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-3.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
],
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-3.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-3.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Path.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.fitWidth,
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 12.0, 0.0),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: SvgPicture.asset(
'assets/images/Steps_Circle-2.svg',
width: 25.0,
height: 25.0,
fit: BoxFit.cover,
),
),
),
],
),
),
Theme(
data: ThemeData(
checkboxTheme: CheckboxThemeData(
visualDensity: VisualDensity.compact,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
),
unselectedWidgetColor:
FlutterTheme.of(context).secondaryText,
),
child: CheckboxListTile(
value: _model.checkboxListTileValue ??= true,
onChanged: (newValue) async {
setState(() => _model.checkboxListTileValue = newValue!);
},
title: Text(
FFLocalizations.of(context).getText(
'fk32zacv' /* Title */,
),
style: FlutterTheme.of(context).titleLarge,
),
subtitle: Text(
FFLocalizations.of(context).getText(
'zi8uwg5b' /* Subtitle goes here... */,
),
style: FlutterTheme.of(context).labelMedium,
),
tileColor: FlutterTheme.of(context).secondaryBackground,
activeColor: FlutterTheme.of(context).primary,
checkColor: FlutterTheme.of(context).info,
dense: false,
controlAffinity: ListTileControlAffinity.trailing,
),
),
wrapWithModel(
model: _model.alertBoxModel,
updateCallback: () => setState(() {}),
child: AlertBoxWidget(),
),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(10.0, 0.0, 0.0, 0.0),
child: FFButtonWidget(
onPressed: () {
print('Button pressed ...');
},
text: FFLocalizations.of(context).getText(
'oxrywvq5' /* Search */,
),
options: FFButtonOptions(
width: 159.0,
height: 50.0,
padding: EdgeInsetsDirectional.fromSTEB(
24.0, 0.0, 24.0, 0.0),
iconPadding:
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
color: Color(0xFF009B9A),
textStyle:
FlutterTheme.of(context).titleSmall.override(
fontFamily: 'Readex Pro',
color: Colors.white,
fontSize: 20.0,
),
elevation: 3.0,
borderSide: BorderSide(
color: Colors.transparent,
width: 1.0,
),
borderRadius: BorderRadius.circular(40.0),
),
),
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 10.0, 0.0),
child: FFButtonWidget(
onPressed: () async {
context.safePop();
},
text: FFLocalizations.of(context).getText(
'7sjdnpdp' /* Cancel */,
),
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(0.0, 12.0, 0.0, 10.0),
child: FFButtonWidget(
onPressed: () {
print('Button pressed ...');
},
text: FFLocalizations.of(context).getText(
'6viv7rw6' /* Download */,
),
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),
),
),
),
],
),
),
),
);
}
}