import 'dart:io'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:mnemo_cards/domain/router/app_router.dart'; import 'package:mnemo_cards/domain/router/app_router.gr.dart'; import 'package:mnemo_cards/flags.dart'; import 'package:mnemo_cards/main.dart'; import 'package:mnemo_cards/widgets/header.dart'; import 'package:mnemo_cards_common/mnemo_cards_common.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:url_launcher/url_launcher.dart'; import '../admin/all_cards.dart'; import '../admin/all_users.dart'; import '../di/locator.dart'; import '../features/analytics/analytics.dart'; import '../theme/themes.dart'; import '../widgets/big_back_button.dart'; import '../widgets/enter_promo_code_widget.dart'; import '../widgets/shared_pref_button.dart'; import '../widgets/simple_tile.dart'; import '../widgets/slider.dart'; import '../widgets/switch_button.dart'; import '../widgets/switch_tile.dart'; import '../widgets/text_button.dart'; import '../widgets/user_statistics.dart'; @RoutePage() class ProfilePage extends StatelessWidget { @override Widget build(BuildContext context) { Analytics.profilePageOpened(locator.userManager.userStateHolder.user); locator.userManager.updateUser(); final theme = Theme.of(context).textTheme; return Scaffold( body: SafeArea( child: Column( children: [ Header( 'Привет!', popText: 'назад', hasPopButton: true, trail: GestureDetector( onTap: () async { await locator.userManager.logout(); final sp = await SharedPreferences.getInstance(); sp.clear(); AppRouter.openAuthOrProfile(); }, child: Row( mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: [ Image.asset( 'icons/exit.png', width: 25.w, ), ], ), ), ), SizedBox( height: 8.h, ), Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (ADMIN_BUILD) Row( children: [ Expanded( child: MaterialButton( onPressed: () { showDialog( context: context, builder: (c) => const AllCards()); }, child: Text('ALL CARDS'), ), ), Expanded( child: MaterialButton( onPressed: () { showDialog( context: context, builder: (c) => const AllUsers()); }, child: Text('ALL USERS'), ), ), ], ), Expanded( child: StreamBuilder( stream: locator.userManager.userStateHolder.asStream, builder: (context, snapshot) { final userData = snapshot.data?.userDataDto; return Padding( padding: const EdgeInsets.only( left: 10.0, right: 10.0, bottom: 8.0, ), child: UserStatistics(userData), ); }, ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 10.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ Divider( height: 5, color: borderGray.withOpacity(0.2), ), const EnterPromoCodeWidget(), Divider( height: 5, color: borderGray.withOpacity(0.2), ), SimpleTile.text( text: 'Написать в телеграм', onTap: () => launchUrl( Uri.parse('https://t.me/mnemo_cards_bot'), ), ), Divider( height: 5, color: borderGray.withOpacity(0.2), ), SimpleTile( onTap: () => appRouter.push( PageRouteInfo(SettingsPage.name), ), title: Row( children: [ Image.asset( 'icons/settings.png', width: 16.w, ), SizedBox(width: 8.w), Expanded(child: Text('Настройки там')), ], ), trail: Image.asset( 'icons/next.png', width: 16.w, ), ), Divider( height: 5, color: borderGray.withOpacity(0.2), ), SizedBox( height: 10.0.h, ), ], ), ), ], ), ), if (MediaQuery.of(context).viewInsets.bottom < 30.0) const BigBackButton(), ], ), ), ); } Future clearAndExit() async { final sp = await SharedPreferences.getInstance(); sp.clear(); exit(0); } const ProfilePage(); }