import 'dart:math' as math; import 'package:flutter/material.dart'; import '../../../../core/theme/design_tokens.dart'; class AuthPageScaffold extends StatelessWidget { const AuthPageScaffold({ super.key, required this.mainContent, this.footer, this.mainContentKey, this.footerKey, }); final Widget mainContent; final Widget? footer; final Key? mainContentKey; final Key? footerKey; @override Widget build(BuildContext context) { final keyboardInset = MediaQuery.viewInsetsOf(context).bottom; return Scaffold( backgroundColor: AppColors.background, body: SafeArea( child: LayoutBuilder( builder: (context, constraints) { final viewportHeight = math.max( constraints.maxHeight - keyboardInset, AppSpacing.none, ); return SingleChildScrollView( keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, padding: EdgeInsets.fromLTRB( AppSpacing.xxl, AppSpacing.none, AppSpacing.xxl, keyboardInset + AppSpacing.xxl, ), child: ConstrainedBox( constraints: BoxConstraints(minHeight: viewportHeight), child: IntrinsicHeight( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( key: mainContentKey, child: Center(child: mainContent), ), if (footer != null) Container(key: footerKey, child: footer), SizedBox(height: AppSpacing.xxl), ], ), ), ), ); }, ), ), ); } }