import 'dart:async'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import '../components/gradient_button.dart'; enum CardBindingStatus { success, failed } class CardBindingResultScreen extends StatefulWidget { final CardBindingStatus status; final String title; final String cardImagePath; const CardBindingResultScreen({ super.key, required this.status, required this.title, required this.cardImagePath, }); @override State createState() => _CardBindingResultScreenState(); } class _CardBindingResultScreenState extends State { Timer? _autoPopTimer; @override void initState() { super.initState(); if (widget.status == CardBindingStatus.success) { _autoPopTimer = Timer(const Duration(seconds: 5), () { if (mounted) { context.go('/home/payment-methods'); } }); } } @override void dispose() { _autoPopTimer?.cancel(); super.dispose(); } @override Widget build(BuildContext context) { final isSuccess = widget.status == CardBindingStatus.success; return Scaffold( body: Container( decoration: const BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ Color(0xFF1B284F), Color(0xFF0F172A), ], ), ), child: SafeArea( child: Stack( children: [ // Positioned( // bottom: 50, // left: 0, // right: 0, // child: Image.asset( // 'assets/wave.png', // fit: BoxFit.cover, // ), // ), Padding( padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // const Spacer(), Text( widget.title, textAlign: TextAlign.center, style: const TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.w500, ), ), const SizedBox(height: 40), Image.asset( isSuccess ? 'assets/icons/success.png' : 'assets/icons/failed.png', width: 140, height: 140, ), const SizedBox(height: 40), if (isSuccess) ...[ Padding( padding: const EdgeInsets.only(bottom: 40.0), // child: Image.asset( // widget.cardImagePath, // width: double.infinity, // fit: BoxFit.contain, // ), ), ] else ...[ const Text( 'Проверьте подключение к\nинтернету и попробуйте снова', textAlign: TextAlign.center, style: TextStyle( color: Color(0xFF94A3B8), fontSize: 16, height: 1.4, ), ), const SizedBox(height: 40), GradientButton( text: "Попробовать снова", onTap: () {}, enabled: true, showArrows: true, ), const SizedBox(height: 12), SizedBox( width: double.infinity, height: 56, child: TextButton( onPressed: () => context.go("/home/payment-methods"), style: TextButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(28), ), backgroundColor: const Color(0xFF0F172A).withOpacity(0.4), ), child: const Text( 'Закрыть', style: TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500, ), ), ), ), ], ], ), ), ], ), ), ), ); } }