import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:stacked/stacked.dart'; import '../../../about/internal/application/NavigatorType.dart'; import '../../../about/internal/application/TextType.dart'; import '../../../configs/Navigator.dart'; import '../../../designs/Responsive.dart'; import '../../../designs/buttons/Buttons.dart'; import '../../../designs/text/Text.dart'; import '../../../utils/Colors.dart'; import '../../login/Login.dart'; import 'ConnectSessionExpired.dart'; import 'SessionExpired.dart'; import 'ViewSessionExpired.dart'; class SessionExpiredState extends State implements ConnectSessionExpired { ViewSessionExpired? _model; @override Widget build(BuildContext context) { return ViewModelBuilder.reactive( viewModelBuilder: () => ViewSessionExpired(context, this), onViewModelReady: (viewModel) { _model = viewModel; _initiate(); }, builder: (context, viewModel, child) => PopScope( canPop: false, child: Scaffold( backgroundColor: colorPrimaryDark, body: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return Responsive( mobile: _mobileView(constraints), tablet: _mobileView(constraints), desktop: _mobileView(constraints), ); }, ), ), ), ); } void _initiate() {} void _onSignIn() { _model?.signOut(); } Widget _mobileView(BoxConstraints constraints) { return SafeArea( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 28, vertical: 32), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ text("GROUNDED", 10, TextType.Bold, color: colorWhite.withValues(alpha: 0.45), letterSpacing: 2.0), Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width: 60, height: 60, alignment: Alignment.center, decoration: BoxDecoration( color: colorWhite.withValues(alpha: 0.10), borderRadius: BorderRadius.circular(18), ), child: Icon(CupertinoIcons.lock_fill, size: 24, color: colorWhite), ), const SizedBox(height: 28), text("SESSION", 10, TextType.Bold, color: colorWhite.withValues(alpha: 0.45), letterSpacing: 1.2), const SizedBox(height: 10), text("Your session has ended.", 34, TextType.Light, color: colorWhite, height: 1.15), const SizedBox(height: 14), text( "Sign in again to pick up where you left off. Your record is intact — nothing was cleared while you were away.", 14, TextType.Regular, color: colorWhite.withValues(alpha: 0.60), height: 1.55, ), ], ), SizedBox( width: double.infinity, child: roundedCornerButton( "Sign in", _onSignIn, background: colorWhite, foreground: colorPrimaryDark, icon: CupertinoIcons.arrow_right, ), ), ], ), ), ); } @override void launchLogin() { GroundedNavigation() .navigateToPage(NavigatorType.makeNewMain, const Login(), context); } }