109 lines
3.4 KiB
Markdown
109 lines
3.4 KiB
Markdown
# یکپارچهسازی تقویم در بخش بازاریابی
|
||
|
||
## تغییرات انجام شده
|
||
|
||
### ✅ اضافه شدن CalendarController به MarketingPage
|
||
- CalendarController به constructor اضافه شد
|
||
- MarketingPage حالا تقویم انتخابی کاربر را میشناسد
|
||
|
||
### ✅ تنظیم DatePicker بر اساس تقویم انتخابی
|
||
DatePicker ها حالا بر اساس تقویم انتخابی کاربر تنظیم میشوند:
|
||
|
||
#### تقویم شمسی:
|
||
```dart
|
||
locale: const Locale('fa', 'IR')
|
||
```
|
||
|
||
#### تقویم میلادی:
|
||
```dart
|
||
locale: const Locale('en', 'US')
|
||
```
|
||
|
||
### 🔧 تغییرات کد:
|
||
|
||
#### 1. **Import CalendarController**
|
||
```dart
|
||
import '../../core/calendar_controller.dart';
|
||
```
|
||
|
||
#### 2. **Constructor بهروزرسانی شده**
|
||
```dart
|
||
class MarketingPage extends StatefulWidget {
|
||
final CalendarController calendarController;
|
||
const MarketingPage({super.key, required this.calendarController});
|
||
}
|
||
```
|
||
|
||
#### 3. **DatePicker از تاریخ**
|
||
```dart
|
||
Future<void> _pickFromDate() async {
|
||
final picked = await showDatePicker(
|
||
context: context,
|
||
initialDate: _fromDate ?? now,
|
||
firstDate: first,
|
||
lastDate: last,
|
||
helpText: t.dateFrom,
|
||
locale: widget.calendarController.isJalali
|
||
? const Locale('fa', 'IR')
|
||
: const Locale('en', 'US'),
|
||
);
|
||
}
|
||
```
|
||
|
||
#### 4. **DatePicker تا تاریخ**
|
||
```dart
|
||
Future<void> _pickToDate() async {
|
||
final picked = await showDatePicker(
|
||
context: context,
|
||
initialDate: _toDate ?? now,
|
||
firstDate: first,
|
||
lastDate: last,
|
||
helpText: t.dateTo,
|
||
locale: widget.calendarController.isJalali
|
||
? const Locale('fa', 'IR')
|
||
: const Locale('en', 'US'),
|
||
);
|
||
}
|
||
```
|
||
|
||
#### 5. **بهروزرسانی main.dart**
|
||
```dart
|
||
GoRoute(
|
||
path: '/user/profile/marketing',
|
||
name: 'profile_marketing',
|
||
builder: (context, state) => MarketingPage(calendarController: _calendarController!),
|
||
),
|
||
```
|
||
|
||
### 🎯 ویژگیهای جدید:
|
||
|
||
#### 1. **تطبیق با تقویم انتخابی**
|
||
- DatePicker ها بر اساس تقویم انتخابی کاربر نمایش داده میشوند
|
||
- تقویم شمسی: Locale فارسی
|
||
- تقویم میلادی: Locale انگلیسی
|
||
|
||
#### 2. **یکپارچگی با سیستم تقویم**
|
||
- MarketingPage از CalendarController استفاده میکند
|
||
- تغییر تقویم در سایر صفحات بر روی DatePicker ها تأثیر میگذارد
|
||
|
||
#### 3. **تجربه کاربری بهتر**
|
||
- کاربران میتوانند تاریخها را با تقویم مورد نظر خود انتخاب کنند
|
||
- فیلتر تاریخ بر اساس تقویم انتخابی کار میکند
|
||
|
||
### ✨ نتیجه:
|
||
حالا در بخش بازاریابی:
|
||
- **فیلتر تاریخ از**: بر اساس تقویم انتخابی
|
||
- **فیلتر تاریخ تا**: بر اساس تقویم انتخابی
|
||
- **تطبیق خودکار**: با تغییر تقویم در سایر صفحات
|
||
|
||
### 🔄 نحوه کار:
|
||
1. کاربر تقویم مورد نظر را انتخاب میکند
|
||
2. در بخش بازاریابی، DatePicker ها بر اساس تقویم انتخابی نمایش داده میشوند
|
||
3. فیلتر تاریخ بر اساس تقویم انتخابی کار میکند
|
||
|
||
## تست
|
||
- ✅ Flutter analyze بدون خطای critical
|
||
- ✅ CalendarController یکپارچه شده
|
||
- ✅ DatePicker ها تطبیق یافته
|
||
- ✅ عملکرد صحیح
|