feature(training): Добавлен состояния загрузки, пустоты и наличие данных на экране тренировки
This commit is contained in:
71
lib/screens/training/states/empty.dart
Normal file
71
lib/screens/training/states/empty.dart
Normal 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),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
35
lib/screens/training/states/loading.dart
Normal file
35
lib/screens/training/states/loading.dart
Normal file
@@ -0,0 +1,35 @@
|
||||
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';
|
||||
|
||||
class TrainingLoading extends StatelessWidget {
|
||||
const TrainingLoading({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.bg,
|
||||
appBar: _buildAppBar(context),
|
||||
body: Center(child: CircularProgressIndicator(color: AppColors.primary)),
|
||||
);
|
||||
}
|
||||
|
||||
/// Построение шапки
|
||||
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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user