import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:keyboard/data/repository/account_repository.dart'; import 'package:keyboard/data/repository/characters_repository.dart'; import 'package:keyboard/data/repository/config_repository.dart'; import 'package:keyboard/data/repository/keyboard_repository.dart'; import 'package:keyboard/data/repository/store_repository.dart'; import '../../base/base_controller.dart'; import '../../resource/assets.gen.dart'; import '../../resource/string.gen.dart'; import '../../utils/keyboard_tutorial_util.dart'; import '../character/character_view.dart'; import '../keyboard/keyboard_view.dart'; import '../mine/mine_view.dart'; @injectable class MainController extends BaseController { final _currentIndex = 0.obs; int get currentIndex => _currentIndex.value; final AccountRepository accountRepository; final KeyboardRepository keyboardRepository; final ConfigRepository configRepository; final StoreRepository storeRepository; final CharactersRepository charactersRepository; MainController( this.accountRepository, this.keyboardRepository, this.configRepository, this.storeRepository, this.charactersRepository, ); final List tabBeans = [ TabBean( StringName.mainTabKeyboard, Assets.images.iconTabKeyboardUnselect.path, Assets.anim.animTabKeyboardSelectedData, AnimatedSwitcher( duration: Duration(milliseconds: 300), transitionBuilder: (Widget child, Animation animation) { return FadeTransition(opacity: animation, child: child); }, child: KeyBoardView(), ), ), TabBean( StringName.mainTabCharacter, Assets.images.iconTabCharacterUnselect.path, Assets.anim.animTabCharacterSelectedData, AnimatedSwitcher( duration: Duration(milliseconds: 300), transitionBuilder: (Widget child, Animation animation) { return FadeTransition(opacity: animation, child: child); }, child: CharacterView(), ), ), TabBean( StringName.mainTabMine, Assets.images.iconTabMineUnselect.path, Assets.anim.animTabMineSelectedData, AnimatedSwitcher( duration: Duration(milliseconds: 300), transitionBuilder: (Widget child, Animation animation) { return FadeTransition(opacity: animation, child: child); }, child: MineView(), ), ), ]; void changeIndex(int index) { if (_currentIndex.value != index) { _currentIndex.value = index; } } @override void onInit() { super.onInit(); // 第一次显示首页,显示键盘引导页 KeyboardTutorialUtil.firstMainPageShowTutorial(); } } class TabBean { final String title; final String normalIcon; final String selectedIcon; final Widget page; const TabBean(this.title, this.normalIcon, this.selectedIcon, this.page); }