developer_options_controller.dart 1.33 KB
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../../../../data/local/user_preferences_storage.dart';
import '../../../routes/app_pages.dart';

class DeveloperOptionsItem {
  const DeveloperOptionsItem({
    required this.title,
    required this.routeName,
  });

  final String title;
  final String routeName;
}

class DeveloperOptionsController extends GetxController {
  DeveloperOptionsController(this._userPreferencesStorage);

  final UserPreferencesStorage _userPreferencesStorage;
  final TextEditingController tokenController = TextEditingController();

  final List<DeveloperOptionsItem> options = const [
    DeveloperOptionsItem(
      title: 'User Information',
      routeName: Routes.USER_INFORMATION,
    ),
    DeveloperOptionsItem(
      title: 'Route List',
      routeName: Routes.ROUTE_LIST,
    ),
    DeveloperOptionsItem(
      title: 'Token Login',
      routeName: Routes.TOKEN_LOGIN,
    ),
  ];

  @override
  void onInit() {
    super.onInit();
    tokenController.text = _userPreferencesStorage.accessToken;
  }

  Future<void> saveAccessToken() async {
    final token = tokenController.text.trim();
    await _userPreferencesStorage.updateAccessToken(token);
    Get.offAllNamed(AppRoutes.home);
  }

  @override
  void onClose() {
    tokenController.dispose();
    super.onClose();
  }
}