Files
rasadyar_application/packages/livestock/lib/presentation/page/map/view.dart
2025-09-24 21:42:22 +03:30

168 lines
6.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart' hide BasePage;
import 'package:rasadyar_livestock/presentation/page/map/widget/map_widget/view.dart';
import 'package:rasadyar_livestock/presentation/widgets/base_page/view.dart';
import 'logic.dart';
class MapPage extends GetView<MapLogic> {
MapPage({super.key});
@override
Widget build(BuildContext context) {
return BasePage(
hasSearch: true,
hasFilter: true,
hasBack: false,
defaultSearch: false,
filteringWidget: filterWidget(showIndex: 3.obs, filterIndex: 5.obs),
widgets: [MapWidget()],
);
}
Widget filterWidget({required RxInt filterIndex, required RxInt showIndex}) {
return BaseBottomSheet(
height: Get.height * 0.5,
child: Container(color: Colors.red),
);
}
BaseBottomSheet searchWidget() {
return BaseBottomSheet(
height: Get.height * 0.85,
rootChild: Column(
spacing: 8,
children: [
Row(
spacing: 12,
children: [
/* Expanded(
child: RTextField(
height: 40,
borderColor: AppColor.blackLight,
suffixIcon: ObxValue(
(data) => Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: (data.value == null)
? Assets.vec.searchSvg.svg(
width: 10,
height: 10,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
)
: IconButton(
onPressed: () {
// controller.baseLogic.searchTextController.clear();
controller.baseLogic.searchValue.value = null;
controller.baseLogic.isSearchSelected.value = false;
//controller.mapLogic.hasFilterOrSearch.value = false;
//controller.searchedPoultryLocation.value = Resource.initial();
},
enableFeedback: true,
padding: EdgeInsets.zero,
iconSize: 24,
splashRadius: 50,
icon: Assets.vec.closeCircleSvg.svg(
width: 20,
height: 20,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
),
),
),
controller.baseLogic.searchValue,
),
hintText: 'جستجو کنید ...',
hintStyle: AppFonts.yekan16.copyWith(color: AppColor.blueNormal),
filledColor: Colors.white,
filled: true,
controller: controller.baseLogic.searchTextController,
onChanged: (val) => controller.baseLogic.searchValue.value = val,
),
),*/
GestureDetector(
onTap: () {
Get.back();
},
child: Assets.vec.mapSvg.svg(
width: 24.w,
height: 24.h,
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
),
),
],
),
/* Expanded(
child: ObxValue((rxData) {
final resource = rxData.value;
final status = resource.status;
final items = resource.data;
final message = resource.message ?? 'خطا در بارگذاری';
if (status == ResourceStatus.initial) {
return Center(child: Text('ابتدا جستجو کنید'));
}
if (status == ResourceStatus.loading) {
return const Center(child: CircularProgressIndicator());
}
if (status == ResourceStatus.error) {
return Center(child: Text(message));
}
if (items == null || items.isEmpty) {
return Center(child: EmptyWidget());
}
return ListView.separated(
itemCount: items.length,
separatorBuilder: (context, index) => SizedBox(height: 8),
itemBuilder: (context, index) {
final item = items[index]; // اگر item استفاده نمیشه، می‌تونه حذف بشه
return ListItem2(
index: index,
labelColor: AppColor.blueLight,
labelIcon: Assets.vec.cowSvg.path,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
item.unitName ?? 'N/A',
style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal),
),
Text(
item.user?.fullname ?? '',
style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'جوجه ریزی فعال',
style: AppFonts.yekan10.copyWith(color: AppColor.blueNormal),
),
Text(
(item.hatching != null && item.hatching!.isNotEmpty)
? 'دارد'
: 'ندراد',
style: AppFonts.yekan12.copyWith(color: AppColor.darkGreyDarkHover),
),
],
),
],
),
);
},
);
}, controller.searchedPoultryLocation),
),*/
],
),
);
}
}