import 'package:flutter/material.dart'; import '../models/custom_kanji_item.dart'; import '../services/custom_deck_repository.dart'; import 'add_card_screen.dart'; import 'custom_quiz_screen.dart'; class CustomSrsScreen extends StatefulWidget { const CustomSrsScreen({super.key}); @override State createState() => _CustomSrsScreenState(); } class _CustomSrsScreenState extends State with SingleTickerProviderStateMixin { late TabController _tabController; final _deckRepository = CustomDeckRepository(); List _deck = []; final _quizScreenKeys = [ GlobalKey(), GlobalKey(), GlobalKey(), ]; @override void initState() { super.initState(); _tabController = TabController(length: 3, vsync: this); _tabController.addListener(() { if (_tabController.indexIsChanging) { final key = _quizScreenKeys[_tabController.index]; key.currentState?.playAudio(); } }); _loadDeck(); } @override void dispose() { _tabController.dispose(); super.dispose(); } Future _loadDeck() async { final deck = await _deckRepository.getCustomDeck(); setState(() { _deck = deck; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Custom SRS'), bottom: TabBar( controller: _tabController, tabs: const [ Tab(text: 'Jpn→Eng'), Tab(text: 'Eng→Jpn'), Tab(text: 'Listening'), ], ), ), body: _deck.isEmpty ? const Center(child: CircularProgressIndicator()) : TabBarView( controller: _tabController, children: [ CustomQuizScreen(key: _quizScreenKeys[0], deck: _deck, quizMode: CustomQuizMode.japaneseToEnglish), CustomQuizScreen(key: _quizScreenKeys[1], deck: _deck, quizMode: CustomQuizMode.englishToJapanese), CustomQuizScreen(key: _quizScreenKeys[2], deck: _deck, quizMode: CustomQuizMode.listeningComprehension), ], ), floatingActionButton: FloatingActionButton( onPressed: () async { await Navigator.of(context).push( MaterialPageRoute(builder: (_) => const AddCardScreen()), ); _loadDeck(); }, child: const Icon(Icons.add), ), ); } }