Fix Android issues

This commit is contained in:
2024-09-10 08:12:33 +09:00
parent a22c2ea730
commit 8ed6a4e8bf
17 changed files with 243 additions and 77 deletions

View File

@ -329,13 +329,6 @@ class TeamController extends GetxController {
}
List<NewCategory> getFilteredCategories_old() {
//List<User> teamMembers = getCurrentTeamMembers();
return categories.where((category) {
return isCategoryValid(category, teamMembers);
}).toList();
}
List<NewCategory> getFilteredCategories() {
if (teamMembers.isEmpty && currentUser.value != null) {
// ソロの場合
String baseCategory = currentUser.value!.female ? 'ソロ女子' : 'ソロ男子';
@ -347,6 +340,24 @@ class TeamController extends GetxController {
}
}
List<NewCategory> getFilteredCategories() {
if (teamMembers.isEmpty && currentUser.value != null) {
// ソロの場合
String baseCategory = currentUser.value!.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;
@ -379,17 +390,7 @@ class TeamController extends GetxController {
// メンバーリストの最新状態を取得
await fetchTeamMembers(selectedTeam.value!.id);
List<NewCategory> eligibleCategories = [];
if (teamMembers.isEmpty || teamMembers.length == 1) {
if (currentUser.value != null) {
String baseCategory = currentUser.value!.female ? 'ソロ女子' : 'ソロ男子';
eligibleCategories = categories.where((c) => c.baseCategory == baseCategory).toList();
}
} else {
bool hasElementaryOrYounger = teamMembers.any(isElementarySchoolOrYounger);
String baseCategory = hasElementaryOrYounger ? 'ファミリー' : '一般';
eligibleCategories = categories.where((c) => c.baseCategory == baseCategory).toList();
}
List<NewCategory> eligibleCategories = getFilteredCategories();
// 同じ時間のカテゴリを優先的に選択
NewCategory? newCategory = eligibleCategories.firstWhereOrNull((c) => c.time == oldTime);

View File

@ -120,15 +120,19 @@ class _TeamDetailPageState extends State<TeamDetailPage> {
}
final filteredCategories = controller.getFilteredCategories();
final categoriesToDisplay = filteredCategories.isEmpty
? controller.categories
: filteredCategories;
// 選択されているカテゴリが表示リストに含まれていない場合、最初の項目を選択する
if (controller.selectedCategory.value == null ||
!filteredCategories.contains(controller.selectedCategory.value)) {
controller.updateCategory(filteredCategories.isNotEmpty
? filteredCategories.first
: null);
}
// 選択されているカテゴリが表示リストに含まれていない場合、最初の項目を選択する
if (controller.selectedCategory.value == null ||
!categoriesToDisplay.contains(controller.selectedCategory.value)) {
controller.updateCategory(categoriesToDisplay.isNotEmpty
? categoriesToDisplay.first
!filteredCategories.contains(controller.selectedCategory.value)) {
controller.updateCategory(filteredCategories.isNotEmpty
? filteredCategories.first
: null);
}
@ -147,7 +151,7 @@ class _TeamDetailPageState extends State<TeamDetailPage> {
),
),
const SizedBox(height: 16),
if (categoriesToDisplay.isEmpty)
if (filteredCategories.isEmpty)
const Text('カテゴリデータを読み込めませんでした。',
style: TextStyle(color: Colors.red))
else
@ -156,7 +160,7 @@ class _TeamDetailPageState extends State<TeamDetailPage> {
decoration: const InputDecoration(
labelText: 'カテゴリ'),
value: controller.selectedCategory.value,
items: categoriesToDisplay.map((category) =>
items: filteredCategories.map((category) =>
DropdownMenuItem(
value: category,
child: Text(category.categoryName),