diff --git a/lib/com/xiaoyan/main/LoginPage.dart b/lib/com/xiaoyan/main/LoginPage.dart new file mode 100644 index 0000000..6e82474 --- /dev/null +++ b/lib/com/xiaoyan/main/LoginPage.dart @@ -0,0 +1,13 @@ +import 'package:flutter/material.dart'; + +class LoginPage extends StatelessWidget { + const LoginPage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Login')), + body: Center(child: Text('Login Page')), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index 640824f..dfbe639 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,16 +1,50 @@ import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; + +import 'com/xiaoyan/main/LoginPage.dart'; void main() { - runApp(const MainApp()); + runApp(MainApp()); } class MainApp extends StatelessWidget { - const MainApp({super.key}); + MainApp({super.key}); @override Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold(body: Center(child: Text('Hello World!'))), - ); + return MaterialApp.router(routerConfig: _route); } + + final _route = GoRouter( + routes: [ + GoRoute(path: '/login', builder: (context, state) => const LoginPage()), + StatefulShellRoute.indexedStack( + builder: (context, state, navigationShell) => Scaffold( + body: navigationShell, + bottomNavigationBar: BottomNavigationBar( + items: const [ + BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'), + BottomNavigationBarItem( + icon: Icon(Icons.settings), + label: 'Settings', + ), + ], + onTap: (index) { + navigationShell.goBranch(index); // 跳转到GoRoute中定义的分支 + }, + ), + ), + branches: [ + StatefulShellBranch( + routes: [ + GoRoute( + path: '/', + builder: (context, state) => const HomePage(), + ), + ], + ), + ], + ), + ], + ); } diff --git a/pubspec.lock b/pubspec.lock index fde9edc..5f9b5a2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -67,6 +67,19 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + go_router: + dependency: "direct main" + description: + name: go_router + sha256: "5922b2861e2235a3504896f0d6fa07d84141b480cf52eecd2f42cd25585a9e8a" + url: "https://mirror.sjtu.edu.cn/dart-pub/" + source: hosted + version: "17.3.0" leak_tracker: dependency: transitive description: @@ -99,6 +112,14 @@ packages: url: "https://mirror.sjtu.edu.cn/dart-pub/" source: hosted version: "6.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://mirror.sjtu.edu.cn/dart-pub/" + source: hosted + version: "1.3.0" matcher: dependency: transitive description: @@ -202,4 +223,4 @@ packages: version: "15.2.0" sdks: dart: ">=3.11.5 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" + flutter: ">=3.38.0" diff --git a/pubspec.yaml b/pubspec.yaml index 7112c65..5bad909 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,6 +9,7 @@ environment: dependencies: flutter: sdk: flutter + go_router: ^17.3.0 dev_dependencies: flutter_test: