Entry の表示改善

This commit is contained in:
2024-09-08 21:18:45 +09:00
parent e6328f84b1
commit a22c2ea730
10 changed files with 321 additions and 18 deletions

View File

@ -8,7 +8,7 @@ import 'package:gifunavi/model/team.dart';
import 'package:gifunavi/model/category.dart';
import 'package:gifunavi/services/api_service.dart';
import '../index/index_controller.dart';
import 'package:gifunavi/pages/index/index_controller.dart';
import 'package:timezone/timezone.dart' as tz;
class EntryController extends GetxController {
@ -27,6 +27,8 @@ class EntryController extends GetxController {
final currentEntry = Rx<Entry?>(null);
final isLoading = true.obs;
final activeEvents = <Event>[].obs; //有効なイベントリスト
@override
void onInit() async {
super.onInit();
@ -52,14 +54,15 @@ class EntryController extends GetxController {
fetchTeams(),
fetchCategories(),
]);
updateActiveEvents(); // イベント取得後にアクティブなイベントを更新
if (Get.arguments != null && Get.arguments['entry'] != null) {
currentEntry.value = Get.arguments['entry'];
initializeEditMode(currentEntry.value!);
} else {
// 新規作成モードの場合、最初のイベントを選択
if (events.isNotEmpty) {
selectedEvent.value = events.first;
selectedDate.value = events.first.startDatetime;
selectedEvent.value = activeEvents.first;
selectedDate.value = activeEvents.first.startDatetime;
}
}
} catch(e) {
@ -70,6 +73,10 @@ class EntryController extends GetxController {
}
}
void updateActiveEvents() {
final now = tz.TZDateTime.now(tz.getLocation('Asia/Tokyo'));
activeEvents.assignAll(events.where((event) => event.deadlineDateTime.isAfter(now)));
}
void initializeEditMode(Entry entry) {
currentEntry.value = entry;
@ -143,6 +150,7 @@ class EntryController extends GetxController {
deadlineDateTime: deadlineDateTime,
);
}).toList());
updateActiveEvents();
} catch (e) {
print('Error fetching events: $e');
Get.snackbar('Error', 'Failed to fetch events');