Fix Android issues
This commit is contained in:
@ -11,6 +11,8 @@ import 'package:gifunavi/services/api_service.dart';
|
||||
import 'package:gifunavi/pages/index/index_controller.dart';
|
||||
import 'package:timezone/timezone.dart' as tz;
|
||||
|
||||
import '../../model/user.dart';
|
||||
|
||||
class EntryController extends GetxController {
|
||||
late ApiService _apiService;
|
||||
|
||||
@ -29,6 +31,8 @@ class EntryController extends GetxController {
|
||||
|
||||
final activeEvents = <Event>[].obs; //有効なイベントリスト
|
||||
|
||||
final teamMembers = <User>[].obs;
|
||||
|
||||
@override
|
||||
void onInit() async {
|
||||
super.onInit();
|
||||
@ -98,12 +102,64 @@ class EntryController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
void updateTeam(Team? value) {
|
||||
Future<void> fetchTeamMembers(int teamId) async {
|
||||
try {
|
||||
final members = await _apiService.getTeamMembers(teamId);
|
||||
teamMembers.assignAll(members);
|
||||
} catch (e) {
|
||||
print('Error fetching team members: $e');
|
||||
Get.snackbar('Error', 'Failed to fetch team members');
|
||||
}
|
||||
}
|
||||
|
||||
List<NewCategory> getFilteredCategories() {
|
||||
if (selectedTeam.value == null) return [];
|
||||
|
||||
if (teamMembers.isEmpty) {
|
||||
// ソロの場合
|
||||
String baseCategory = selectedTeam.value!.members.first.female ? 'ソロ女子' : 'ソロ男子';
|
||||
return categories.where((c) => c.categoryName.startsWith(baseCategory)).toList();
|
||||
} else if (teamMembers.length == 1) {
|
||||
// チームメンバーが1人の場合(ソロ)
|
||||
String baseCategory = teamMembers.first.female ? 'ソロ女子' : 'ソロ男子';
|
||||
return categories.where((c) => c.categoryName.startsWith(baseCategory)).toList();
|
||||
} else {
|
||||
// 複数人の場合
|
||||
bool hasElementaryOrYounger = teamMembers.any(isElementarySchoolOrYounger);
|
||||
String baseCategory = hasElementaryOrYounger ? 'ファミリー' : '一般';
|
||||
return categories.where((c) => c.categoryName.startsWith(baseCategory)).toList();
|
||||
}
|
||||
}
|
||||
|
||||
bool isElementarySchoolOrYounger(User user) {
|
||||
final now = DateTime.now();
|
||||
final age = now.year - user.dateOfBirth!.year;
|
||||
return age <= 12;
|
||||
}
|
||||
|
||||
void updateTeam(Team? value) async {
|
||||
selectedTeam.value = value;
|
||||
if (value != null) {
|
||||
await fetchTeamMembers(value.id);
|
||||
final filteredCategories = getFilteredCategories();
|
||||
if (filteredCategories.isNotEmpty) {
|
||||
selectedCategory.value = filteredCategories.first;
|
||||
} else {
|
||||
selectedCategory.value = null;
|
||||
}
|
||||
} else {
|
||||
teamMembers.clear();
|
||||
selectedCategory.value = null;
|
||||
}
|
||||
}
|
||||
|
||||
void updateTeam_old(Team? value) {
|
||||
selectedTeam.value = value;
|
||||
if (value != null) {
|
||||
selectedCategory.value = value.category;
|
||||
}
|
||||
}
|
||||
|
||||
//void updateTeam(Team? value) => selectedTeam.value = value;
|
||||
void updateCategory(NewCategory? value) => selectedCategory.value = value;
|
||||
//void updateDate(DateTime value) => selectedDate.value = value;
|
||||
|
||||
@ -175,6 +175,20 @@ class EntryDetailPage extends GetView<EntryController> {
|
||||
}
|
||||
|
||||
Widget _buildCategoryDropdown() {
|
||||
final eligibleCategories = controller.getFilteredCategories();
|
||||
|
||||
return DropdownButtonFormField<NewCategory>(
|
||||
decoration: InputDecoration(labelText: 'カテゴリ'),
|
||||
value: controller.selectedCategory.value,
|
||||
items: eligibleCategories.map((category) => DropdownMenuItem<NewCategory>(
|
||||
value: category,
|
||||
child: Text(category.categoryName),
|
||||
)).toList(),
|
||||
onChanged: (value) => controller.updateCategory(value),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildCategoryDropdown_old() {
|
||||
final eligibleCategories = controller.categories.where((c) =>
|
||||
c.baseCategory == controller.selectedCategory.value?.baseCategory
|
||||
).toList();
|
||||
|
||||
Reference in New Issue
Block a user