|
|
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 it’s 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(
|
|
|
"Don’t 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),
|
|
|
),
|
|
|
),
|
|
|
),
|
|
|
],
|
|
|
),
|
|
|
),
|
|
|
),
|
|
|
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|