ほぼ完成:QRcodeトライ
This commit is contained in:
@ -12,6 +12,7 @@ import 'package:latlong2/latlong.dart';
|
||||
import 'package:rogapp/model/destination.dart';
|
||||
import 'package:rogapp/model/entry.dart';
|
||||
import 'package:rogapp/pages/destination/destination_controller.dart';
|
||||
import 'package:rogapp/pages/team/team_controller.dart';
|
||||
import 'package:rogapp/routes/app_pages.dart';
|
||||
import 'package:rogapp/services/auth_service.dart';
|
||||
import 'package:rogapp/services/location_service.dart';
|
||||
@ -20,9 +21,12 @@ import 'package:rogapp/widgets/debug_widget.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import 'package:rogapp/services/api_service.dart';
|
||||
import 'package:rogapp/model/user.dart';
|
||||
|
||||
import '../../main.dart';
|
||||
|
||||
import 'package:rogapp/main.dart';
|
||||
|
||||
import 'package:rogapp/widgets/helper_dialog.dart';
|
||||
|
||||
class IndexController extends GetxController with WidgetsBindingObserver {
|
||||
List<GeoJSONFeatureCollection> locations = <GeoJSONFeatureCollection>[].obs;
|
||||
@ -353,6 +357,12 @@ class IndexController extends GetxController with WidgetsBindingObserver {
|
||||
// ログイン成功後、api_serviceを初期化
|
||||
await Get.putAsync(() => ApiService().init());
|
||||
|
||||
// ユーザー情報の完全性をチェック
|
||||
if (await checkUserInfoComplete()) {
|
||||
Get.offAllNamed(AppPages.INDEX);
|
||||
} else {
|
||||
Get.offAllNamed(AppPages.USER_DETAILS_EDIT);
|
||||
}
|
||||
|
||||
} else {
|
||||
logManager.addOperationLog("User failed login : ${email} , ${password}.");
|
||||
@ -372,6 +382,14 @@ class IndexController extends GetxController with WidgetsBindingObserver {
|
||||
});
|
||||
}
|
||||
|
||||
Future<bool> checkUserInfoComplete() async {
|
||||
final user = await ApiService.to.getCurrentUser();
|
||||
return user.firstname.isNotEmpty &&
|
||||
user.lastname.isNotEmpty &&
|
||||
user.dateOfBirth != null &&
|
||||
user.female != null;
|
||||
}
|
||||
|
||||
// 要検討:エラーハンドリングが行われていますが、エラーメッセージをローカライズすることを検討してください。
|
||||
//
|
||||
void changePassword(
|
||||
@ -507,7 +525,7 @@ class IndexController extends GetxController with WidgetsBindingObserver {
|
||||
saveToDevice(currentUser[0]["token"]);
|
||||
}
|
||||
isLoading.value = false;
|
||||
loadLocationsBound( currentUser[0]["user"]["even_code"]);
|
||||
loadLocationsBound( currentUser[0]["user"]["event_code"]);
|
||||
if (currentUser.isNotEmpty) {
|
||||
rogMode.value = 0;
|
||||
restoreGame();
|
||||
@ -752,4 +770,23 @@ class IndexController extends GetxController with WidgetsBindingObserver {
|
||||
// 例: 現在の位置情報を再取得し、マップを更新する
|
||||
loadLocationsBound( eventCode );
|
||||
}
|
||||
|
||||
Future<void> checkEntryData() async {
|
||||
// エントリーデータの有無をチェックするロジック
|
||||
final teamController = TeamController();
|
||||
bool hasEntryData = teamController.checkIfUserHasEntryData();
|
||||
if (!hasEntryData) {
|
||||
await showHelperDialog(
|
||||
'イベントに参加するには、チーム登録・メンバー登録及びエントリーが必要になります。',
|
||||
'entry_check'
|
||||
);
|
||||
// ドロワーを表示するロジック
|
||||
Get.toNamed('/drawer');
|
||||
}
|
||||
}
|
||||
|
||||
void updateCurrentUser(User updatedUser) {
|
||||
currentUser[0]['user'] = updatedUser.toJson();
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,8 +23,40 @@ import 'package:rogapp/utils/location_controller.dart';
|
||||
|
||||
// IndexPageクラスは、GetView<IndexController>を継承したStatelessWidgetです。このクラスは、アプリのメインページを表すウィジェットです。
|
||||
//
|
||||
class IndexPage extends GetView<IndexController> {
|
||||
IndexPage({Key? key}) : super(key: key);
|
||||
import 'package:rogapp/widgets/helper_dialog.dart';
|
||||
|
||||
class IndexPage extends StatefulWidget {
|
||||
@override
|
||||
_IndexPageState createState() => _IndexPageState();
|
||||
}
|
||||
|
||||
class _IndexPageState extends State<IndexPage> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
//checkEntryAndShowHelper();
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
void checkEntryAndShowHelper() async {
|
||||
final hasEntry = await checkIfUserHasEntry(); // この関数は実装する必要があります
|
||||
if (!hasEntry) {
|
||||
showHelperDialog(
|
||||
context,
|
||||
'イベントに参加するには、チーム登録・メンバー登録及びエントリーが必要になります。',
|
||||
'entry_helper',
|
||||
showDoNotShowAgain: true,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// class IndexPage extends GetView<IndexController> {
|
||||
// IndexPage({Key? key}) : super(key: key);
|
||||
|
||||
// IndexControllerとDestinationControllerのインスタンスを取得しています。
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user