import 'package:flutter/material.dart'; import 'package:pshared/widgets/locale.dart'; import 'package:pweb/pages/status/failure.dart'; import 'package:pweb/pages/status/success.dart'; import 'package:pweb/pages/with_footer.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class StatusPage extends StatefulWidget { final Future Function() operation; final String errorMessage; final IconData? successIcon; final String successMessage; final String successDescription; final Widget? successAction; const StatusPage({ super.key, required this.operation, required this.errorMessage, this.successIcon, required this.successMessage, required this.successDescription, this.successAction, }); @override State> createState() => _StatusPageState(); } class _StatusPageState extends State> { late Future _operation; @override void initState() { super.initState(); _operation = widget.operation(); } @override Widget build(BuildContext context) => PageWithFooter( appBar: AppBar( title: Text(AppLocalizations.of(context)!.verifyAccount), centerTitle: true, actions: [ const LocaleChangerDropdown( availableLocales: AppLocalizations.supportedLocales, ), ], ), child: FutureBuilder( future: _operation, builder: (context, snapshot) { if (snapshot.hasError) { return StatusPageFailure( errorMessage: widget.errorMessage, error: snapshot.error!, ); } if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } return StatusPageSuccess( successMessage: widget.successMessage, successDescription: widget.successDescription, icon: widget.successIcon, action: widget.successAction, ); }, ), ); }