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.

180 lines
6.0 KiB

2 months ago
import 'package:flutter/material.dart';
import '../common/settings.dart';
class CancelOrderScreen extends StatefulWidget {
var order;
var status;
CancelOrderScreen({this.order, this.status});
@override
State<CancelOrderScreen> createState() => _CancelOrderScreenState();
}
class _CancelOrderScreenState extends State<CancelOrderScreen> {
String? selectedReason;
final TextEditingController reasonController = TextEditingController();
final List<String> reasons = [
"Changed my mind",
"Tanker not available",
"Vehicle got damaged",
"Buyer asked me to cancel",
"Other",
];
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
scrolledUnderElevation: 0,
title: Text(
'Cancel Order',
style: fontTextStyle(14, Color(0XFF2A2A2A), FontWeight.w500),
),
iconTheme: IconThemeData(color: Color(0XFF2A2A2A)),
leading: GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Padding(
padding:
const EdgeInsets.fromLTRB(8, 8, 8, 8), // Add padding if needed
child: Image.asset(
'images/backbutton_appbar.png', // Replace with your image path
fit: BoxFit.contain,
color: Color(0XFF2A2A2A),
height: 24,
width: 24,
),
),
),
),
body: Padding(
padding:EdgeInsets.all(24.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Why are you cancelling?",
style: fontTextStyle(14, Color(0XFF2A2A2A), FontWeight.w600),
),
SizedBox(height:MediaQuery.of(context).size.height * .008,),
// Radio buttons
...reasons.map((reason) {
return RadioListTile<String>(
value: reason,
groupValue: selectedReason,
activeColor: primaryColor,
contentPadding: EdgeInsets.zero,
title: Text(
reason,
style:
fontTextStyle(12, Color(0XFF2D2E30), FontWeight.w400),
),
onChanged: (value) {
setState(() {
selectedReason = value;
});
},
);
}).toList(),
if (selectedReason == "Other")
Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: TextFormField(
controller: reasonController,
maxLines: 5,
style: fontTextStyle(14, Color(0XFF101214), FontWeight.w400),
cursorColor: Color(0XFF1D7AFC),
textCapitalization: TextCapitalization.sentences,
decoration: textFormFieldDecorationHintText(
Icons.phone,
'Describe your reason..',
),
),
),
SizedBox(height:MediaQuery.of(context).size.height * .008,),
Text(
"Cancellation Policy",
style:fontTextStyle(14, Color(0XFF2A2A2A), FontWeight.w600),
),
SizedBox(height:MediaQuery.of(context).size.height * .016,),
Text(
'Cancel anytime before delivery starts. If its already on the way, a ₹100 cancellation fee may apply. Please review our full terms and conditions for more details.',
style:fontTextStyle(12, Color(0XFF2A2A2A), FontWeight.w400),
),
SizedBox(height:MediaQuery.of(context).size.height * .016,),
GestureDetector(
onTap: () {
// open terms page
},
child: Text(
"View Terms & Conditions",
style: fontTextStylewithUnderline(10, Color(0XFF4692FD), FontWeight.w400,Color(0XFF4692FD)),
),
),
],
),
),
),
bottomNavigationBar: SafeArea(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Row(
children: [
// Secondary
Expanded(
child: OutlinedButton(
onPressed: () => Navigator.pop(context),
style: OutlinedButton.styleFrom(
side: const BorderSide(color: Color(0xFF2A2A2A)),
padding: const EdgeInsets.symmetric(vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(24),
),
),
child: Text(
"Dont cancel",
style: fontTextStyle(14, const Color(0xFF2A2A2A), FontWeight.w600),
),
),
),
const SizedBox(width: 12),
// Primary
Expanded(
child: ElevatedButton(
onPressed: () {
// TODO: call cancel API
},
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0XFFE2483D),
padding: const EdgeInsets.symmetric(vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(24),
),
),
child: Text(
"Cancel Order",
style: fontTextStyle(14, const Color(0XFFFFFFFF), FontWeight.w600),
),
),
),
],
),
),
),
);
}
}