idle
This commit is contained in:
@@ -240,197 +240,202 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
} else if (!isLoggedIn) {
|
} else if (!isLoggedIn) {
|
||||||
_animationController.reverse();
|
_animationController.reverse();
|
||||||
}
|
}
|
||||||
return AnimatedContainer(
|
return Padding(
|
||||||
duration: const Duration(milliseconds: 350),
|
padding: const EdgeInsets.only(top: 42.0),
|
||||||
curve: Curves.easeInOut,
|
child: AnimatedContainer(
|
||||||
width: isLoggedIn
|
duration: const Duration(milliseconds: 350),
|
||||||
? MediaQuery.of(context).size.width * 0.9
|
curve: Curves.easeInOut,
|
||||||
: 340,
|
width: isLoggedIn
|
||||||
height: isLoggedIn
|
? MediaQuery.of(context).size.width * 0.9
|
||||||
? MediaQuery.of(context).size.height * 0.9
|
: 340,
|
||||||
: 280,
|
height: isLoggedIn
|
||||||
child: ClipRRect(
|
? MediaQuery.of(context).size.height * 0.9
|
||||||
borderRadius: BorderRadius.circular(16),
|
: 280,
|
||||||
child: BackdropFilter(
|
child: ClipRRect(
|
||||||
filter: ui.ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
borderRadius: BorderRadius.circular(16),
|
||||||
child: Stack(
|
child: BackdropFilter(
|
||||||
children: [
|
filter: ui.ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||||
Container(
|
child: Stack(
|
||||||
decoration: AppTheme.glassDecoration,
|
children: [
|
||||||
child: isLoggedIn
|
Container(
|
||||||
? BlocListener<
|
decoration: AppTheme.glassDecoration,
|
||||||
OrganizationBloc,
|
child: isLoggedIn
|
||||||
OrganizationState
|
? BlocListener<
|
||||||
>(
|
OrganizationBloc,
|
||||||
listener: (context, state) {
|
OrganizationState
|
||||||
if (state is OrganizationLoaded &&
|
>(
|
||||||
state.selectedOrg != null) {
|
listener: (context, state) {
|
||||||
// Reload file browser when org changes
|
if (state is OrganizationLoaded &&
|
||||||
context.read<FileBrowserBloc>().add(
|
state.selectedOrg != null) {
|
||||||
LoadDirectory(
|
// Reload file browser when org changes
|
||||||
orgId: state.selectedOrg!.id,
|
context.read<FileBrowserBloc>().add(
|
||||||
path: '/',
|
LoadDirectory(
|
||||||
|
orgId: state.selectedOrg!.id,
|
||||||
|
path: '/',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child:
|
||||||
|
BlocBuilder<
|
||||||
|
OrganizationBloc,
|
||||||
|
OrganizationState
|
||||||
|
>(
|
||||||
|
builder: (context, orgState) {
|
||||||
|
if (orgState
|
||||||
|
is OrganizationInitial) {
|
||||||
|
WidgetsBinding.instance
|
||||||
|
.addPostFrameCallback((_) {
|
||||||
|
context
|
||||||
|
.read<
|
||||||
|
OrganizationBloc
|
||||||
|
>()
|
||||||
|
.add(
|
||||||
|
LoadOrganizations(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
_buildOrgRow(context),
|
||||||
|
Expanded(
|
||||||
|
child: _buildDrive(
|
||||||
|
orgState,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
),
|
),
|
||||||
);
|
)
|
||||||
}
|
: const LoginForm(),
|
||||||
},
|
|
||||||
child:
|
|
||||||
BlocBuilder<
|
|
||||||
OrganizationBloc,
|
|
||||||
OrganizationState
|
|
||||||
>(
|
|
||||||
builder: (context, orgState) {
|
|
||||||
if (orgState
|
|
||||||
is OrganizationInitial) {
|
|
||||||
WidgetsBinding.instance
|
|
||||||
.addPostFrameCallback((_) {
|
|
||||||
context
|
|
||||||
.read<
|
|
||||||
OrganizationBloc
|
|
||||||
>()
|
|
||||||
.add(
|
|
||||||
LoadOrganizations(),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
const SizedBox(height: 8),
|
|
||||||
_buildOrgRow(context),
|
|
||||||
Expanded(
|
|
||||||
child: _buildDrive(orgState),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: 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],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
// Top-left radial glow - primary accent light
|
||||||
// Bottom-right warm glow - complementary lighting
|
AnimatedPositioned(
|
||||||
AnimatedPositioned(
|
duration: const Duration(milliseconds: 350),
|
||||||
duration: const Duration(milliseconds: 350),
|
curve: Curves.easeInOut,
|
||||||
curve: Curves.easeInOut,
|
top: isLoggedIn ? -180 : -120,
|
||||||
bottom: isLoggedIn ? -200 : -140,
|
left: isLoggedIn ? -180 : -120,
|
||||||
right: isLoggedIn ? -200 : -140,
|
child: IgnorePointer(
|
||||||
child: IgnorePointer(
|
child: AnimatedContainer(
|
||||||
child: AnimatedContainer(
|
duration: const Duration(milliseconds: 350),
|
||||||
duration: const Duration(milliseconds: 350),
|
curve: Curves.easeInOut,
|
||||||
curve: Curves.easeInOut,
|
width: isLoggedIn ? 550 : 400,
|
||||||
width: isLoggedIn ? 530 : 380,
|
height: isLoggedIn ? 550 : 400,
|
||||||
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
|
|
||||||
Positioned(
|
|
||||||
top: 0,
|
|
||||||
left: 0,
|
|
||||||
right: 0,
|
|
||||||
child: IgnorePointer(
|
|
||||||
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
|
|
||||||
Positioned(
|
|
||||||
left: 0,
|
|
||||||
top: 0,
|
|
||||||
bottom: 0,
|
|
||||||
child: IgnorePointer(
|
|
||||||
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
|
|
||||||
Positioned(
|
|
||||||
top: 0,
|
|
||||||
left: 0,
|
|
||||||
child: IgnorePointer(
|
|
||||||
child: Transform.rotate(
|
|
||||||
angle: 0.785,
|
|
||||||
child: Container(
|
|
||||||
width: 600,
|
|
||||||
height: 100,
|
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
gradient: LinearGradient(
|
shape: BoxShape.circle,
|
||||||
|
gradient: RadialGradient(
|
||||||
colors: [
|
colors: [
|
||||||
Colors.white.withValues(alpha: 0),
|
AppTheme.accentColor.withValues(
|
||||||
Colors.white.withValues(alpha: 0.06),
|
alpha: isLoggedIn ? 0.12 : 0.15,
|
||||||
Colors.white.withValues(alpha: 0),
|
),
|
||||||
|
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
|
||||||
],
|
Positioned(
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
child: IgnorePointer(
|
||||||
|
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
|
||||||
|
Positioned(
|
||||||
|
left: 0,
|
||||||
|
top: 0,
|
||||||
|
bottom: 0,
|
||||||
|
child: IgnorePointer(
|
||||||
|
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
|
||||||
|
Positioned(
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
child: IgnorePointer(
|
||||||
|
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),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -439,7 +444,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
top: 10,
|
top: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
right: 0,
|
right: 0,
|
||||||
child: Center(
|
child: Center(
|
||||||
@@ -447,7 +452,7 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
'b0esche.cloud',
|
'b0esche.cloud',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'PixelatedElegance',
|
fontFamily: 'PixelatedElegance',
|
||||||
fontSize: 42,
|
fontSize: 48,
|
||||||
color: AppTheme.primaryText,
|
color: AppTheme.primaryText,
|
||||||
decoration: TextDecoration.underline,
|
decoration: TextDecoration.underline,
|
||||||
decorationColor: AppTheme.primaryText,
|
decorationColor: AppTheme.primaryText,
|
||||||
|
|||||||
Reference in New Issue
Block a user