You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.8 KiB
121 lines
3.8 KiB
import 'dart:async';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:supplier_new/orders/unloading_completed_otp.dart';
|
|
|
|
import '../common/settings.dart';
|
|
import 'all_orders.dart';
|
|
|
|
TextStyle fts(double s, Color c, FontWeight w) =>
|
|
GoogleFonts.inter(fontSize: s, color: c, fontWeight: w);
|
|
|
|
class UnloadingInProgressScreen extends StatefulWidget {
|
|
final Duration? startFrom;
|
|
var details;
|
|
|
|
UnloadingInProgressScreen({
|
|
this.details,
|
|
this.startFrom
|
|
});
|
|
/// If you want to start from a preset time (e.g., 12 minutes), pass Duration(minutes: 12)
|
|
|
|
|
|
@override
|
|
State<UnloadingInProgressScreen> createState() => _UnloadingInProgressScreenState();
|
|
}
|
|
|
|
class _UnloadingInProgressScreenState extends State<UnloadingInProgressScreen> {
|
|
late Duration _elapsed;
|
|
Timer? _timer;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_elapsed = widget.startFrom ?? Duration.zero;
|
|
_timer = Timer.periodic(const Duration(seconds: 1), (_) {
|
|
setState(() => _elapsed += const Duration(seconds: 1));
|
|
});
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
_timer?.cancel();
|
|
super.dispose();
|
|
}
|
|
|
|
String _fmt(Duration d) {
|
|
final h = d.inHours.toString().padLeft(2, '0');
|
|
final m = (d.inMinutes % 60).toString().padLeft(2, '0');
|
|
final s = (d.inSeconds % 60).toString().padLeft(2, '0');
|
|
return '$h:$m:$s';
|
|
}
|
|
|
|
void _onComplete() {
|
|
_timer?.cancel();
|
|
// Optionally show a toast/snackbar, then navigate
|
|
// ScaffoldMessenger.of(context).showSnackBar(
|
|
// SnackBar(content: Text('Unloading marked complete at ${_fmt(_elapsed)}')),
|
|
// );
|
|
|
|
Navigator.pushReplacement(
|
|
context,
|
|
MaterialPageRoute(builder: (_) => UnloadingCompleteScreen(details: widget.details,)),
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return WillPopScope(
|
|
onWillPop: () async {
|
|
Navigator.pushAndRemoveUntil(
|
|
context,
|
|
MaterialPageRoute(builder: (_) => AllOrders(navigationFrom:"")),
|
|
(route) => false,
|
|
);
|
|
return false;
|
|
},
|
|
|
|
child:Scaffold(
|
|
backgroundColor: Colors.white,
|
|
appBar: AppSettings.appBarWithNotificationIcon(widget.details.building_name, widget.details.type_of_water, widget.details.capacity, context),
|
|
|
|
body: SafeArea(
|
|
child: Center(
|
|
child: Padding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 24),
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Text('Unloading in-progress',
|
|
style: fontTextStyle(24, const Color(0xFF000000), FontWeight.w500)),
|
|
const SizedBox(height: 12),
|
|
Text(
|
|
_fmt(_elapsed),
|
|
style: fontTextStyle(40, const Color(0xFF000000), FontWeight.w700),
|
|
),
|
|
const SizedBox(height: 24),
|
|
SizedBox(
|
|
width: double.infinity,
|
|
height: 48,
|
|
child: ElevatedButton(
|
|
onPressed: _onComplete,
|
|
style: ElevatedButton.styleFrom(
|
|
backgroundColor: Colors.black,
|
|
foregroundColor: Colors.white,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(24),
|
|
),
|
|
),
|
|
child: Text('Unloading Complete',
|
|
style: fontTextStyle(14, const Color(0xFFFFFFFF), FontWeight.w400)),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
));
|
|
}
|
|
}
|