b0-cloud second commit
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import '../blocs/auth/auth_bloc.dart';
|
||||
import '../blocs/auth/auth_state.dart';
|
||||
import '../theme/app_theme.dart';
|
||||
import 'login_form.dart';
|
||||
import 'file_explorer.dart';
|
||||
|
||||
@@ -36,7 +36,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.black,
|
||||
backgroundColor: AppTheme.primaryBackground,
|
||||
body: Stack(
|
||||
children: [
|
||||
Center(
|
||||
@@ -61,17 +61,138 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white.withValues(alpha: 0.1),
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
border: Border.all(
|
||||
color: Colors.white.withValues(alpha: 0.2),
|
||||
child: Stack(
|
||||
children: [
|
||||
Container(
|
||||
decoration: AppTheme.glassDecoration,
|
||||
child: isLoggedIn
|
||||
? const FileExplorer()
|
||||
: const LoginForm(),
|
||||
),
|
||||
),
|
||||
child: isLoggedIn
|
||||
? const FileExplorer()
|
||||
: const LoginForm(),
|
||||
// Top-left radial glow - primary accent light
|
||||
AnimatedPositioned(
|
||||
duration: const Duration(milliseconds: 350),
|
||||
curve: Curves.easeInOut,
|
||||
top: isLoggedIn ? -180 : -120,
|
||||
left: isLoggedIn ? -180 : -120,
|
||||
child: IgnorePointer(
|
||||
child: AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 350),
|
||||
curve: Curves.easeInOut,
|
||||
width: isLoggedIn ? 550 : 400,
|
||||
height: isLoggedIn ? 550 : 400,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
gradient: RadialGradient(
|
||||
colors: [
|
||||
AppTheme.accentColor.withValues(
|
||||
alpha: isLoggedIn ? 0.12 : 0.15,
|
||||
),
|
||||
AppTheme.accentColor.withValues(
|
||||
alpha: 0.04,
|
||||
),
|
||||
Colors.transparent,
|
||||
],
|
||||
stops: const [0.0, 0.6, 1.0],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Bottom-right warm glow - complementary lighting
|
||||
AnimatedPositioned(
|
||||
duration: const Duration(milliseconds: 350),
|
||||
curve: Curves.easeInOut,
|
||||
bottom: isLoggedIn ? -200 : -140,
|
||||
right: isLoggedIn ? -200 : -140,
|
||||
child: IgnorePointer(
|
||||
child: AnimatedContainer(
|
||||
duration: const Duration(milliseconds: 350),
|
||||
curve: Curves.easeInOut,
|
||||
width: isLoggedIn ? 530 : 380,
|
||||
height: isLoggedIn ? 530 : 380,
|
||||
decoration: BoxDecoration(
|
||||
shape: BoxShape.circle,
|
||||
gradient: RadialGradient(
|
||||
colors: [
|
||||
Colors.cyan.withValues(
|
||||
alpha: isLoggedIn ? 0.06 : 0.08,
|
||||
),
|
||||
Colors.transparent,
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Top edge subtle highlight
|
||||
IgnorePointer(
|
||||
child: Positioned(
|
||||
top: 0,
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: Container(
|
||||
height: 60,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Colors.white.withValues(alpha: 0.05),
|
||||
Colors.transparent,
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Left edge subtle side lighting
|
||||
IgnorePointer(
|
||||
child: Positioned(
|
||||
left: 0,
|
||||
top: 0,
|
||||
bottom: 0,
|
||||
child: Container(
|
||||
width: 40,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.centerLeft,
|
||||
end: Alignment.centerRight,
|
||||
colors: [
|
||||
AppTheme.accentColor.withValues(
|
||||
alpha: 0.04,
|
||||
),
|
||||
Colors.transparent,
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
// Diagonal shimmer overlay
|
||||
IgnorePointer(
|
||||
child: Positioned(
|
||||
top: -100,
|
||||
right: -100,
|
||||
child: Transform.rotate(
|
||||
angle: 0.785,
|
||||
child: Container(
|
||||
width: 600,
|
||||
height: 100,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Colors.white.withValues(alpha: 0),
|
||||
Colors.white.withValues(alpha: 0.06),
|
||||
Colors.white.withValues(alpha: 0),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -89,9 +210,9 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
||||
style: TextStyle(
|
||||
fontFamily: 'PixelatedElegance',
|
||||
fontSize: 42,
|
||||
color: Colors.white,
|
||||
color: AppTheme.primaryText,
|
||||
decoration: TextDecoration.underline,
|
||||
decorationColor: Colors.white,
|
||||
decorationColor: AppTheme.primaryText,
|
||||
fontFeatures: [const FontFeature.slashedZero()],
|
||||
),
|
||||
),
|
||||
@@ -136,7 +257,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
||||
Widget _buildNavButton(String label, IconData icon, {bool isAvatar = false}) {
|
||||
final isSelected = _selectedTab == label;
|
||||
final highlightColor = Color.fromARGB(255, 100, 200, 255);
|
||||
final defaultColor = Colors.white70;
|
||||
final defaultColor = AppTheme.secondaryText;
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
@@ -147,7 +268,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
||||
child: isAvatar
|
||||
? CircleAvatar(
|
||||
backgroundColor: isSelected ? highlightColor : defaultColor,
|
||||
child: Icon(icon, color: Colors.black),
|
||||
child: Icon(icon, color: AppTheme.primaryBackground),
|
||||
)
|
||||
: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
|
||||
Reference in New Issue
Block a user