迁移 Flutter 端与训练脚本,模型/训练产物移出 git(遵循纯代码约定)
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'auth/auth_screen.dart';
|
||||
import 'auth/session_store.dart';
|
||||
import 'camera/camera_screen.dart';
|
||||
import 'container.dart';
|
||||
import 'home/home_screen.dart';
|
||||
import 'payment/paywall_screen.dart';
|
||||
|
||||
class ObserverApp extends StatelessWidget {
|
||||
final AppContainer container;
|
||||
|
||||
const ObserverApp({super.key, required this.container});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiProvider(
|
||||
providers: [
|
||||
Provider.value(value: container),
|
||||
Provider.value(value: container.sessionStore),
|
||||
ChangeNotifierProvider.value(value: container.authViewModel),
|
||||
ChangeNotifierProvider.value(value: container.homeViewModel),
|
||||
ChangeNotifierProvider.value(value: container.paywallViewModel),
|
||||
],
|
||||
child: MaterialApp(
|
||||
title: '视野',
|
||||
theme: ThemeData(
|
||||
colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
|
||||
),
|
||||
initialRoute: '/gate',
|
||||
routes: {
|
||||
'/gate': (_) => const StartupGate(),
|
||||
'/login': (_) => const AuthScreen(),
|
||||
'/home': (_) => const HomeScreen(),
|
||||
'/paywall': (_) => const PaywallScreen(),
|
||||
'/camera': (_) => const CameraScreen(),
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// 启动门卫:无登录 token → 登录页;已登录 → 主界面(到期状态由主界面展示)
|
||||
class StartupGate extends StatefulWidget {
|
||||
const StartupGate({super.key});
|
||||
|
||||
@override
|
||||
State<StartupGate> createState() => _StartupGateState();
|
||||
}
|
||||
|
||||
class _StartupGateState extends State<StartupGate> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_check();
|
||||
}
|
||||
|
||||
Future<void> _check() async {
|
||||
final session = context.read<SessionStore>();
|
||||
final token = await session.readToken();
|
||||
if (!mounted) return;
|
||||
Navigator.of(context)
|
||||
.pushReplacementNamed(token == null ? '/login' : '/home');
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return const Scaffold(
|
||||
body: Center(child: CircularProgressIndicator()),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user