| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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<TikuApp> createState() => _TikuAppState();
- }
- class _TikuAppState extends ConsumerState<TikuApp> {
- @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<MainShell> createState() => _MainShellState();
- }
- class _MainShellState extends ConsumerState<MainShell> {
- 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: '设置'),
- ],
- ),
- );
- }
- }
|