Merge branch 'wala_plus_with_dialog_removal' of http://34.17.182.140/Haroon6138/mohemm-flutter-app into wala_plus_with_dialog_removal
commit
63f678b666
@ -0,0 +1,105 @@
|
|||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:mohem_flutter_app/app_state/app_state.dart';
|
||||||
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||||
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||||
|
|
||||||
|
// Shared by MazayaDiscoverScreen and RetailersListScreen so both city pickers stay
|
||||||
|
// visually/behaviorally identical - change the list or the sheet design here only.
|
||||||
|
List<String> mazayaCitiesList(BuildContext context) {
|
||||||
|
bool isAr = AppState().isArabic(context);
|
||||||
|
return <String>[
|
||||||
|
LocaleKeys.allCitiesOption.tr(),
|
||||||
|
LocaleKeys.riyadh.tr(),
|
||||||
|
isAr ? "جدة" : "Jeddah",
|
||||||
|
isAr ? "الدمام" : "Dammam",
|
||||||
|
isAr ? "الخبر" : "Khobar",
|
||||||
|
isAr ? "مكة المكرمة" : "Mecca",
|
||||||
|
isAr ? "المدينة المنورة" : "Medina",
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
void showMazayaCitySelectionBottomSheet(
|
||||||
|
BuildContext context, {
|
||||||
|
required String selectedCity,
|
||||||
|
required ValueChanged<String> onCitySelected,
|
||||||
|
}) {
|
||||||
|
List<String> cities = mazayaCitiesList(context);
|
||||||
|
|
||||||
|
showModalBottomSheet<void>(
|
||||||
|
context: context,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
builder: (BuildContext sheetContext) {
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.fromLTRB(16, 12, 16, 24),
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
|
||||||
|
),
|
||||||
|
child: SafeArea(
|
||||||
|
top: false,
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 40,
|
||||||
|
height: 4,
|
||||||
|
margin: const EdgeInsets.only(bottom: 12),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: const Color(0xFFCBD5E1),
|
||||||
|
borderRadius: BorderRadius.circular(2),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
LocaleKeys.selectCity.tr().toText16(
|
||||||
|
isBold: true,
|
||||||
|
color: const Color(0xFF1E293B),
|
||||||
|
),
|
||||||
|
InkWell(
|
||||||
|
onTap: () => Navigator.pop(sheetContext),
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
child: const Padding(
|
||||||
|
padding: EdgeInsets.all(4),
|
||||||
|
child: Icon(
|
||||||
|
Icons.close_rounded,
|
||||||
|
size: 20,
|
||||||
|
color: Color(0xFF64748B),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
...cities.map((city) {
|
||||||
|
bool isSelected = selectedCity == city;
|
||||||
|
return ListTile(
|
||||||
|
title: city.toText14(
|
||||||
|
isBold: isSelected,
|
||||||
|
color:
|
||||||
|
isSelected
|
||||||
|
? const Color(0xFF0D9488)
|
||||||
|
: const Color(0xFF1E293B),
|
||||||
|
),
|
||||||
|
trailing:
|
||||||
|
isSelected
|
||||||
|
? const Icon(
|
||||||
|
Icons.check_rounded,
|
||||||
|
color: Color(0xFF0D9488),
|
||||||
|
size: 20,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
onTap: () {
|
||||||
|
onCitySelected(city);
|
||||||
|
Navigator.pop(sheetContext);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue