51 lines
1.6 KiB
Dart
51 lines
1.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:shadcn_ui/shadcn_ui.dart';
|
|
import '../providers/theme_provider.dart';
|
|
import '../providers/auth_provider.dart';
|
|
import '../providers/file_provider.dart';
|
|
import '../providers/media_library_provider.dart';
|
|
import '../pages/login_page.dart';
|
|
import '../pages/workspace_page.dart';
|
|
import 'app_theme.dart';
|
|
|
|
class GuangyaApp extends ConsumerWidget {
|
|
const GuangyaApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final themeState = ref.watch(themeProvider);
|
|
final auth = ref.watch(authProvider);
|
|
|
|
// Auto-load files when signed in
|
|
if (auth.isSignedIn) {
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
final fp = ref.read(fileProvider.notifier);
|
|
fp.api = ref.read(authProvider.notifier).api;
|
|
final media = ref.read(mediaLibraryProvider.notifier);
|
|
media.api = ref.read(authProvider.notifier).api;
|
|
media.load();
|
|
final fileState = ref.read(fileProvider);
|
|
if (fileState.files.isEmpty && !fileState.isLoading) {
|
|
fp.loadFiles();
|
|
}
|
|
});
|
|
}
|
|
|
|
return ShadApp(
|
|
title: '光鸭云盘',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: lightTheme,
|
|
darkTheme: darkTheme,
|
|
themeMode: themeState.themeMode,
|
|
home: auth.isLoading
|
|
? const Scaffold(
|
|
body: Center(child: SizedBox(width: 220, child: ShadProgress())),
|
|
)
|
|
: auth.isSignedIn
|
|
? const WorkspacePage()
|
|
: const LoginPage(),
|
|
);
|
|
}
|
|
}
|