import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'providers/app_provider.dart'; import 'pages/settings/settings_page.dart'; import 'pages/home/home_page.dart'; import 'pages/search/search_page.dart'; import 'pages/carts/cart_list_page.dart'; class TikuApp extends ConsumerStatefulWidget { const TikuApp({super.key}); @override ConsumerState createState() => _TikuAppState(); } class _TikuAppState extends ConsumerState { @override void initState() { super.initState(); Future.microtask(() => ref.read(connectionProvider.notifier).initialize()); } @override Widget build(BuildContext context) { final connState = ref.watch(connectionProvider); return MaterialApp( title: '某人的题库', debugShowCheckedModeBanner: false, theme: ThemeData( colorSchemeSeed: Colors.blue, useMaterial3: true, brightness: Brightness.light, appBarTheme: const AppBarTheme(centerTitle: true), ), home: connState.status == ConnectionStatus.configured ? const MainShell() : const SettingsPage(), ); } } /// 主界面 Shell — 底部标签导航 class MainShell extends ConsumerStatefulWidget { const MainShell({super.key}); @override ConsumerState createState() => _MainShellState(); } class _MainShellState extends ConsumerState { int _currentIndex = 0; final _pages = const [ HomePage(), SearchPage(), CartListPage(), SettingsPage(), ]; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack(index: _currentIndex, children: _pages), bottomNavigationBar: NavigationBar( selectedIndex: _currentIndex, onDestinationSelected: (i) => setState(() => _currentIndex = i), destinations: const [ NavigationDestination(icon: Icon(Icons.library_books), label: '题库'), NavigationDestination(icon: Icon(Icons.search), label: '搜索'), NavigationDestination(icon: Icon(Icons.shopping_cart), label: '试题篮'), NavigationDestination(icon: Icon(Icons.settings), label: '设置'), ], ), ); } }