// lib/pages/team/member_detail_page.dart import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:rogapp/pages/team/member_controller.dart'; class MemberDetailPage extends GetView { final TextEditingController _firstNameController = TextEditingController(); final TextEditingController _lastNameController = TextEditingController(); @override Widget build(BuildContext context) { final mode = Get.arguments['mode']; final member = Get.arguments['member']; WidgetsBinding.instance.addPostFrameCallback((_) { if (mode == 'edit' && member != null) { controller.setSelectedMember(member); } }); return Scaffold( appBar: AppBar( title: Text(mode == 'new' ? 'メンバー追加' : 'メンバー詳細'), actions: [ IconButton( icon: Icon(Icons.save), onPressed: () async { await controller.saveMember(); Get.back(); }, ), ], ), body: Obx(() { if (controller.isLoading.value) { return Center(child: CircularProgressIndicator()); } _firstNameController.value = _firstNameController.value.copyWith( text: controller.firstname.value, selection: TextSelection.collapsed( offset: controller.firstname.value.length), ); _lastNameController.value = _lastNameController.value.copyWith( text: controller.lastname.value, selection: TextSelection.collapsed( offset: controller.lastname.value.length), ); return Padding( padding: EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (mode == 'edit' && member.email != null) Text('Email: ${member.email}'), if (mode == 'new' || (mode == 'edit' && member.email == null)) TextField( decoration: InputDecoration(labelText: 'Email'), onChanged: (value) => controller.updateEmail(value), ), TextField( decoration: InputDecoration(labelText: '姓'), controller: _lastNameController, onChanged: (value) => controller.updateLastName(value), ), TextField( decoration: InputDecoration(labelText: '名'), controller: _firstNameController, onChanged: (value) => controller.updateFirstName(value), ), // 誕生日選択ウィジェットを追加 if (mode == 'edit') Text('ステータス: ${controller.getMemberStatus()}'), if (mode == 'edit' && controller.getMemberStatus() == '招待中') ElevatedButton( child: Text('招待メールを再送信'), onPressed: () => controller.resendInvitation(), ), if (mode == 'edit') ElevatedButton( child: Text('メンバーから除外'), onPressed: () => controller.deleteMember(), ), ], ), ); }) ); } }