import 'dart:math'; import 'package:auto_route/auto_route.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:remever/common/resources.dart'; import 'package:remever/common/widgets/typography.dart'; import 'package:remever/common/widgets/wspace.dart'; import 'package:remever/components/extensions/context.dart'; import 'package:remever/gen/assets.gen.dart'; import 'package:remever/router.gr.dart'; import 'package:remever/screens/collections/widgets/collection_progress_bar.dart'; import 'package:remever/screens/collections/widgets/learning_card.dart'; import 'package:remever/widgets/primary_button.dart'; @RoutePage() class CreateScreen extends StatelessWidget { const CreateScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.gray_bg, appBar: _buildAppBar(), body: _buildMain(context), ); } AppBar _buildAppBar() { return AppBar( toolbarHeight: 66.h, backgroundColor: AppColors.white, shadowColor: Colors.transparent, title: AppTypography( 'Создать карточку', type: SemiBold20px(), color: AppColors.body_text, ), centerTitle: true, ); } Widget _buildMain(BuildContext context) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 16).r, child: Column( children: [ Expanded( child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const HSpace(16), _filters(), const HSpace(16), AppTypography('Коллекция', type: Medium16px()), const HSpace(4), _buildCollection(context), const HSpace(16), AppTypography('Вопрос', type: Medium16px()), const HSpace(4), LearningCard( index: 0, type: CardType.CREATE, onTextTap: () { context.pushRoute( CrudCollectionFullscreenField( title: 'Вопрос', hint: '', height: 313, ), ); }, ), const HSpace(16), AppTypography('Ответ', type: Medium16px()), LearningCard( index: 1, type: CardType.CREATE, onTextTap: () { context.pushRoute( CrudCollectionFullscreenField( title: 'Ответ', hint: '', height: 313, ), ); }, ), revertCard(), ], ), ), ), _createBtn(), const HSpace(31), ], ), ); } Widget revertCard() { return SizedBox( height: 52.h, child: Row( children: [ Center( child: Assets.icons.typeFlip2.image(height: 20.h, width: 20.w), ), const WSpace(2), Flexible( fit: FlexFit.tight, child: AppTypography( 'Создать карточку-наоборот', type: Medium16px(), ), ), SizedBox( height: 20.h, width: 36.w, child: FittedBox( fit: BoxFit.contain, child: CupertinoSwitch( activeTrackColor: AppColors.primary, value: false, onChanged: (bool value) {}, ), ), ), ], ), ); } Row _filters() { return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ _buildFilterButton(AppColors.gray_bg, 'Запомнить', () {}), _buildFilterButton(AppColors.white, 'Держать в фокусе', () {}), ], ); } Widget _createBtn() { return PrimaryButton( color: AppColors.primary, child: AppTypography( 'Создать карточку', type: Medium14px(), color: AppColors.white, ), onTap: () {}, ); } /// /// Построение кнопки фильтра /// Widget _buildFilterButton(Color color, String title, void Function()? onTap) { return GestureDetector( onTap: onTap, child: Container( width: 158.h, height: 36.h, decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(16)).r, color: color, ), child: Center(child: AppTypography(title, type: SemiBold14px())), ), ); } Widget _buildCollection(BuildContext context) { return GestureDetector( onTap: () {}, child: Container( constraints: BoxConstraints(minHeight: 66.h, maxHeight: 84.h), decoration: BoxDecoration( borderRadius: BorderRadius.circular(12).r, color: AppColors.white, ), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8).r, child: Row( children: [_buildAvatar(), const WSpace(5), _buildInfo()], ), ), ); } /// /// Построение основной информации /// Widget _buildInfo() { return SizedBox( width: 230.w, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ _buildTitle(), const HSpace(4), Row( children: [ Assets.icons.typeCards.image( height: 18.h, width: 18.w, color: AppColors.disabled, ), const WSpace(2), AppTypography( Random().nextInt(654).toString(), type: Regular14px(), color: AppColors.disabled, ), ], ), const HSpace(6), const CollectionProgressBar(), ], ), ); } /// /// Название коллекции /// Widget _buildTitle() { return AppTypography( 'Астрономия', type: Medium16px(), maxLines: 2, softWrap: true, ); } /// /// Обложка коллекции /// Widget _buildAvatar() { return SizedBox.square( dimension: 50.r, child: DecoratedBox( decoration: BoxDecoration( shape: BoxShape.circle, image: DecorationImage(image: Assets.images.img.provider()), ), ), ); } }