feature(training): Добавлен состояния загрузки, пустоты и наличие данных на экране тренировки

This commit is contained in:
2025-06-17 22:27:22 +03:00
parent 0842c479c7
commit 285c4ca3f2
17 changed files with 1098 additions and 65 deletions

View File

@@ -0,0 +1,71 @@
import 'package:auto_route/auto_route.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/widgets/primary_button.dart';
class TrainingEmpty extends StatelessWidget {
const TrainingEmpty({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.bg,
appBar: _buildAppBar(context),
body: _buildMain(context),
);
}
/// Построение шапки
AppBar _buildAppBar(BuildContext context) {
return AppBar(
backgroundColor: AppColors.white,
shadowColor: Colors.transparent,
leading: GestureDetector(
onTap: () => context.back(),
child: const Icon(Icons.close, color: Colors.black),
),
centerTitle: true,
title: AppTypography(
'Тренировка',
type: SemiBold20px(),
color: AppColors.body_text,
),
);
}
Widget _buildMain(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16).r,
child: Column(
children: [
HSpace(90),
Assets.images.trainingEmpty.image(height: 127.h, width: 160.w),
HSpace(20),
AppTypography(
'К сожалению, у вас нет карточек для изучения',
type: SemiBold20px(),
maxLines: 3,
textAlign: TextAlign.center,
),
Spacer(),
PrimaryButton(
onTap: () {
context.router.replaceAll([CreateRoute()]);
},
child: AppTypography(
'Создать карточку',
type: Medium14px(),
color: Colors.white,
),
),
HSpace(90),
],
),
);
}
}