feature(training): отбражение данных для тренировки
This commit is contained in:
@@ -1,16 +1,13 @@
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:remever/common/resources.dart';
|
||||
import 'package:remever/common/typography.dart';
|
||||
import 'package:remever/common/widgets/typography.dart';
|
||||
import 'package:remever/common/widgets/w_if.dart';
|
||||
import 'package:remever/common/widgets/wspace.dart';
|
||||
import 'package:remever/components/extensions/context.dart';
|
||||
import 'package:remever/components/extensions/state.dart';
|
||||
import 'package:remever/gen/assets.gen.dart';
|
||||
import 'package:remever/router.gr.dart';
|
||||
import 'package:remever/models/training_dto.dart';
|
||||
import 'package:remever/screens/training/cubit/training_cubit.dart';
|
||||
import 'package:remever/screens/training/states/empty.dart';
|
||||
import 'package:remever/screens/training/states/loading.dart';
|
||||
@@ -40,7 +37,7 @@ class TrainingScreen extends StatelessWidget {
|
||||
return state.when(
|
||||
loading: () => TrainingLoading(),
|
||||
empty: () => TrainingEmpty(),
|
||||
data: () => TrainingData(),
|
||||
data: (data) => TrainingData(data: data),
|
||||
result: () => Placeholder(),
|
||||
);
|
||||
},
|
||||
@@ -50,8 +47,9 @@ class TrainingScreen extends StatelessWidget {
|
||||
}
|
||||
|
||||
class TrainingData extends StatefulWidget {
|
||||
const TrainingData({super.key});
|
||||
const TrainingData({super.key, required this.data});
|
||||
|
||||
final List<TrainingDto> data;
|
||||
@override
|
||||
State<TrainingData> createState() => _TrainingDataState();
|
||||
}
|
||||
@@ -59,6 +57,8 @@ class TrainingData extends StatefulWidget {
|
||||
class _TrainingDataState extends State<TrainingData> {
|
||||
bool _showAnswer = false;
|
||||
|
||||
int _currentTicketIndex = 0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@@ -97,7 +97,12 @@ class _TrainingDataState extends State<TrainingData> {
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(3).r,
|
||||
child: Center(child: AppTypography('1 из 9', type: Regular14px())),
|
||||
child: Center(
|
||||
child: AppTypography(
|
||||
'${_currentTicketIndex + 1} из ${widget.data.length}',
|
||||
type: Regular14px(),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -117,7 +122,13 @@ class _TrainingDataState extends State<TrainingData> {
|
||||
children: [
|
||||
Flexible(
|
||||
child: PrimaryButton(
|
||||
onTap: () {},
|
||||
onTap: () {
|
||||
if (widget.data.length == _currentTicketIndex + 1) {
|
||||
context.read<TrainingCubit>().toResultState();
|
||||
return;
|
||||
}
|
||||
safeSetState(() => _currentTicketIndex++);
|
||||
},
|
||||
color: AppColors.danger,
|
||||
child: AppTypography(
|
||||
'Не помню',
|
||||
@@ -133,7 +144,13 @@ class _TrainingDataState extends State<TrainingData> {
|
||||
type: Medium14px(),
|
||||
color: Colors.white,
|
||||
),
|
||||
onTap: () {},
|
||||
onTap: () {
|
||||
if (widget.data.length == _currentTicketIndex + 1) {
|
||||
context.read<TrainingCubit>().toResultState();
|
||||
return;
|
||||
}
|
||||
safeSetState(() => _currentTicketIndex++);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -171,10 +188,14 @@ class _TrainingDataState extends State<TrainingData> {
|
||||
child: Column(
|
||||
spacing: 8.r,
|
||||
children: [
|
||||
TrainingTicket(),
|
||||
TrainingTicket(trainingDto: widget.data[_currentTicketIndex]),
|
||||
Wif(
|
||||
condition: _showAnswer,
|
||||
builder: (context) => TrainingTicket(isAnswer: true),
|
||||
builder:
|
||||
(context) => TrainingTicket(
|
||||
trainingDto: widget.data[_currentTicketIndex],
|
||||
isAnswer: true,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user