Compare commits
No commits in common. "2619210611bffdd5ef7a1f16a52fc550db5253a4" and "9c2808297ad4e8c054660e40092189d04362baa6" have entirely different histories.
2619210611
...
9c2808297a
|
|
@ -279,7 +279,6 @@ class AssessmentViewModel extends BaseViewModel {
|
||||||
Future<void> _getAssessments() async {
|
Future<void> _getAssessments() async {
|
||||||
if (await _statusChecker.checkConnection()) {
|
if (await _statusChecker.checkConnection()) {
|
||||||
_assessments = await _apiService.getAssessments();
|
_assessments = await _apiService.getAssessments();
|
||||||
_assessments.reversed;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import 'package:yimaru_app/ui/common/enmus.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/finish_learn_practice_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/finish_learn_practice_screen.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_loading_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_loading_screen.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_completion_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_completion_screen.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_description_screen.dart';
|
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_result_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_result_screen.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_questions_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_questions_screen.dart';
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_intro_screen.dart';
|
import 'package:yimaru_app/ui/views/learn_practice/screens/learn_practice_intro_screen.dart';
|
||||||
|
|
@ -103,21 +102,17 @@ class LearnPracticeView extends StackedView<LearnPracticeViewModel> {
|
||||||
index: viewModel.currentPage, children: _buildScreens(viewModel));
|
index: viewModel.currentPage, children: _buildScreens(viewModel));
|
||||||
|
|
||||||
List<Widget> _buildScreens(LearnPracticeViewModel viewModel) => [
|
List<Widget> _buildScreens(LearnPracticeViewModel viewModel) => [
|
||||||
_buildLearnPracticeIntroScreen(),
|
_buildLearnPracticeIntroScreen(viewModel),
|
||||||
_buildLearnPracticeElementsScreen(),
|
_buildLearnPracticeQuestionsScreen(viewModel),
|
||||||
_buildLearnPracticeQuestionsScreen(),
|
|
||||||
_buildFinishLearnPracticeScreen(),
|
_buildFinishLearnPracticeScreen(),
|
||||||
_buildLearnPracticeResultScreen(),
|
_buildLearnPracticeResultScreen(),
|
||||||
_buildLearnPracticeCompletionScreen()
|
_buildLearnPracticeCompletionScreen()
|
||||||
];
|
];
|
||||||
|
|
||||||
Widget _buildLearnPracticeIntroScreen() =>
|
Widget _buildLearnPracticeIntroScreen(LearnPracticeViewModel viewModel) =>
|
||||||
const LearnPracticeIntroScreen();
|
const LearnPracticeIntroScreen();
|
||||||
|
|
||||||
Widget _buildLearnPracticeElementsScreen() =>
|
Widget _buildLearnPracticeQuestionsScreen(LearnPracticeViewModel viewModel) =>
|
||||||
const LearnPracticeDescriptionScreen();
|
|
||||||
|
|
||||||
Widget _buildLearnPracticeQuestionsScreen() =>
|
|
||||||
const LearnPracticeQuestionsScreen();
|
const LearnPracticeQuestionsScreen();
|
||||||
|
|
||||||
Widget _buildFinishLearnPracticeScreen() => const FinishLearnPracticeScreen();
|
Widget _buildFinishLearnPracticeScreen() => const FinishLearnPracticeScreen();
|
||||||
|
|
|
||||||
|
|
@ -240,13 +240,6 @@ class LearnPracticeViewModel extends ReactiveViewModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset
|
|
||||||
Future<void> reset() async {
|
|
||||||
goTo(0);
|
|
||||||
_answers.clear();
|
|
||||||
questionSetController.jumpToPage(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Navigation
|
// Navigation
|
||||||
void pop() => _navigationService.back();
|
void pop() => _navigationService.back();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,6 @@ class FinishLearnPracticeScreen
|
||||||
extends ViewModelWidget<LearnPracticeViewModel> {
|
extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
const FinishLearnPracticeScreen({super.key});
|
const FinishLearnPracticeScreen({super.key});
|
||||||
|
|
||||||
Future<void> _reset(LearnPracticeViewModel viewModel)async =>await viewModel.reset();
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, LearnPracticeViewModel viewModel) =>
|
Widget build(BuildContext context, LearnPracticeViewModel viewModel) =>
|
||||||
_buildScaffoldWrapper(viewModel);
|
_buildScaffoldWrapper(viewModel);
|
||||||
|
|
@ -111,7 +109,7 @@ class FinishLearnPracticeScreen
|
||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
foregroundColor: kcWhite,
|
foregroundColor: kcWhite,
|
||||||
text: 'Continue Practice',
|
text: 'Continue Practice',
|
||||||
onTap: () => viewModel.goTo(4),
|
onTap: () => viewModel.goTo(5),
|
||||||
backgroundColor: kcPrimaryColor,
|
backgroundColor: kcPrimaryColor,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -122,7 +120,7 @@ class FinishLearnPracticeScreen
|
||||||
text: 'Practice Again',
|
text: 'Practice Again',
|
||||||
backgroundColor: kcWhite,
|
backgroundColor: kcWhite,
|
||||||
borderColor: kcPrimaryColor,
|
borderColor: kcPrimaryColor,
|
||||||
|
onTap: () => viewModel.goTo(1),
|
||||||
foregroundColor: kcPrimaryColor,
|
foregroundColor: kcPrimaryColor,
|
||||||
onTap: ()async => await _reset(viewModel) ,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,175 +0,0 @@
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:stacked/stacked.dart';
|
|
||||||
import 'package:yimaru_app/ui/common/helper_functions.dart';
|
|
||||||
import 'package:yimaru_app/ui/views/learn_practice/learn_practice_viewmodel.dart';
|
|
||||||
|
|
||||||
import '../../../common/app_colors.dart';
|
|
||||||
import '../../../common/ui_helpers.dart';
|
|
||||||
import '../../../widgets/cancel_learn_practice_sheet.dart';
|
|
||||||
import '../../../widgets/custom_elevated_button.dart';
|
|
||||||
import '../../../widgets/small_app_bar.dart';
|
|
||||||
import '../../../widgets/speaking_partner_image.dart';
|
|
||||||
|
|
||||||
class LearnPracticeDescriptionScreen
|
|
||||||
extends ViewModelWidget<LearnPracticeViewModel> {
|
|
||||||
const LearnPracticeDescriptionScreen({super.key});
|
|
||||||
|
|
||||||
Future<void> _cancel(LearnPracticeViewModel viewModel) async {
|
|
||||||
await viewModel.stopRecording();
|
|
||||||
viewModel.pop();
|
|
||||||
viewModel.pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> _showSheet(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) async =>
|
|
||||||
await showModalBottomSheet(
|
|
||||||
context: context,
|
|
||||||
isScrollControlled: true,
|
|
||||||
backgroundColor: kcTransparent,
|
|
||||||
builder: (cxt) => _buildSheet(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context, LearnPracticeViewModel viewModel) =>
|
|
||||||
_buildScaffoldWrapper(context: context, viewModel: viewModel);
|
|
||||||
|
|
||||||
Widget _buildScaffoldWrapper(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
|
||||||
Scaffold(
|
|
||||||
backgroundColor: kcBackgroundColor,
|
|
||||||
body: _buildScaffold(context: context, viewModel: viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildScaffold(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
|
||||||
SafeArea(
|
|
||||||
child: _buildColumnWrapper(context: context, viewModel: viewModel));
|
|
||||||
|
|
||||||
Widget _buildColumnWrapper(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 15),
|
|
||||||
child: _buildColumn(context: context, viewModel: viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildColumn(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
verticalSpaceMedium,
|
|
||||||
_buildAppBar(context: context, viewModel: viewModel),
|
|
||||||
verticalSpaceMedium,
|
|
||||||
_buildBodyColumnWrapper(viewModel),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildAppBar(
|
|
||||||
{required BuildContext context,
|
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
|
||||||
SmallAppBar(
|
|
||||||
showBackButton: true,
|
|
||||||
onPop: () async =>
|
|
||||||
await _showSheet(context: context, viewModel: viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildSheet(LearnPracticeViewModel viewModel) =>
|
|
||||||
CancelLearnPracticeSheet(
|
|
||||||
onClose: viewModel.pop,
|
|
||||||
onContinue: viewModel.pop,
|
|
||||||
user: viewModel.user?.firstName ?? '',
|
|
||||||
onCancel: () async => await _cancel(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildBodyColumnWrapper(LearnPracticeViewModel viewModel) => Expanded(
|
|
||||||
child: _buildBodyColumn(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildBodyColumn(LearnPracticeViewModel viewModel) => Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: _buildBodyColumnChildren(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
List<Widget> _buildBodyColumnChildren(LearnPracticeViewModel viewModel) => [
|
|
||||||
_buildPracticeColumnWrapper(viewModel),
|
|
||||||
_buildContinueButtonWrapper(viewModel)
|
|
||||||
];
|
|
||||||
|
|
||||||
Widget _buildPracticeColumnWrapper(LearnPracticeViewModel viewModel) =>
|
|
||||||
Expanded(child: _buildPracticeColumnScrollView(viewModel));
|
|
||||||
|
|
||||||
Widget _buildPracticeColumnScrollView(LearnPracticeViewModel viewModel) =>
|
|
||||||
SingleChildScrollView(
|
|
||||||
child: _buildPracticeColumn(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildPracticeColumn(LearnPracticeViewModel viewModel) => Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: _buildPracticeColumnChildren(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
List<Widget> _buildPracticeColumnChildren(LearnPracticeViewModel viewModel) =>
|
|
||||||
[
|
|
||||||
_buildTitle(viewModel),
|
|
||||||
verticalSpaceMedium,
|
|
||||||
_buildSubtitle(viewModel),
|
|
||||||
verticalSpaceMedium,
|
|
||||||
_buildImageContainer(viewModel),
|
|
||||||
];
|
|
||||||
|
|
||||||
Widget _buildTitle(LearnPracticeViewModel viewModel) => Text.rich(
|
|
||||||
TextSpan(text: 'Speaking Practice: ', style: style14DG600, children: [
|
|
||||||
TextSpan(
|
|
||||||
style: style14MG400,
|
|
||||||
text: viewModel.practices.first.title ?? '',
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildSubtitle(LearnPracticeViewModel viewModel) => Text(
|
|
||||||
viewModel.practices.first.storyDescription ?? '',
|
|
||||||
style: style14DG400,
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildImageContainer(LearnPracticeViewModel viewModel) => Container(
|
|
||||||
height: 200,
|
|
||||||
width: double.maxFinite,
|
|
||||||
margin: const EdgeInsets.symmetric(horizontal: 10),
|
|
||||||
child: _buildImageWrapper(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildImageWrapper(LearnPracticeViewModel viewModel) => ClipRRect(
|
|
||||||
borderRadius: BorderRadius.circular(5),
|
|
||||||
child: _buildImage(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildImage(LearnPracticeViewModel viewModel) => CachedNetworkImage(
|
|
||||||
fit: BoxFit.cover,
|
|
||||||
width: double.maxFinite,
|
|
||||||
imageUrl: getReadableUrl(viewModel.practices.first.storyImage ?? '') ?? '',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildContinueButtonWrapper(LearnPracticeViewModel viewModel) =>
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 50),
|
|
||||||
child: _buildContinueButton(viewModel),
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget _buildContinueButton(LearnPracticeViewModel viewModel) =>
|
|
||||||
CustomElevatedButton(
|
|
||||||
height: 55,
|
|
||||||
borderRadius: 12,
|
|
||||||
text: 'Start Practice',
|
|
||||||
foregroundColor: kcWhite,
|
|
||||||
onTap: () => viewModel.goTo(2),
|
|
||||||
backgroundColor: kcPrimaryColor,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -71,6 +71,7 @@ class LearnPracticeIntroScreen extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
required LearnPracticeViewModel viewModel}) =>
|
required LearnPracticeViewModel viewModel}) =>
|
||||||
SmallAppBar(
|
SmallAppBar(
|
||||||
showBackButton: true,
|
showBackButton: true,
|
||||||
|
title: 'Practice Speaking',
|
||||||
onPop: () async =>
|
onPop: () async =>
|
||||||
await _showSheet(context: context, viewModel: viewModel),
|
await _showSheet(context: context, viewModel: viewModel),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,10 @@ class LearnPracticeResultScreen
|
||||||
extends ViewModelWidget<LearnPracticeViewModel> {
|
extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
const LearnPracticeResultScreen({super.key});
|
const LearnPracticeResultScreen({super.key});
|
||||||
|
|
||||||
void _navigate(LearnPracticeViewModel viewModel) async=>await viewModel.reset();
|
void _navigate(LearnPracticeViewModel viewModel) {
|
||||||
|
viewModel.questionSetController.jumpToPage(0);
|
||||||
|
viewModel.goTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _cancel(LearnPracticeViewModel viewModel) async {
|
Future<void> _cancel(LearnPracticeViewModel viewModel) async {
|
||||||
await viewModel.stopRecording();
|
await viewModel.stopRecording();
|
||||||
|
|
@ -144,7 +147,7 @@ class LearnPracticeResultScreen
|
||||||
text: 'Continue',
|
text: 'Continue',
|
||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
foregroundColor: kcWhite,
|
foregroundColor: kcWhite,
|
||||||
onTap: () => viewModel.goTo(5),
|
onTap: () => viewModel.goTo(4),
|
||||||
backgroundColor: kcPrimaryColor,
|
backgroundColor: kcPrimaryColor,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ class StartLearnPracticeScreen extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
viewModel.pop();
|
viewModel.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _start(LearnPracticeViewModel viewModel)async =>
|
void _start(LearnPracticeViewModel viewModel) {
|
||||||
await viewModel.playVoicePrompt(question);
|
viewModel.playVoicePrompt(question);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _showSheet(
|
Future<void> _showSheet(
|
||||||
{required BuildContext context,
|
{required BuildContext context,
|
||||||
|
|
@ -115,7 +115,7 @@ class StartLearnPracticeScreen extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
|
|
||||||
Widget _buildStartButtonContainer(LearnPracticeViewModel viewModel) =>
|
Widget _buildStartButtonContainer(LearnPracticeViewModel viewModel) =>
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () async=>await _start(viewModel),
|
onTap: () => _start(viewModel),
|
||||||
child: _buildStartButton(),
|
child: _buildStartButton(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -142,16 +142,16 @@ class StartLearnPracticeScreen extends ViewModelWidget<LearnPracticeViewModel> {
|
||||||
startAngle: 0.0,
|
startAngle: 0.0,
|
||||||
center: Alignment.center,
|
center: Alignment.center,
|
||||||
colors: [
|
colors: [
|
||||||
kcPrimaryColor.withValues(alpha:0.3),
|
kcPrimaryColor.withOpacity(0.3),
|
||||||
kcIndigo.withValues(alpha:0.2),
|
kcIndigo.withOpacity(0.2),
|
||||||
kcIndigo.withValues(alpha:0.3),
|
kcIndigo.withOpacity(0.3),
|
||||||
kcIndigo.withValues(alpha:0.4),
|
kcIndigo.withOpacity(0.4),
|
||||||
kcIndigo.withValues(alpha:0.5),
|
kcIndigo.withOpacity(0.5),
|
||||||
kcPrimaryColor.withValues(alpha:0.5),
|
kcPrimaryColor.withOpacity(0.5),
|
||||||
kcPrimaryColor.withValues(alpha:0.4),
|
kcPrimaryColor.withOpacity(0.4),
|
||||||
kcPrimaryColor.withValues(alpha:0.3),
|
kcPrimaryColor.withOpacity(0.3),
|
||||||
kcPrimaryColor.withValues(alpha: 0.2),
|
kcPrimaryColor.withOpacity(0.2),
|
||||||
kcPrimaryColor.withValues(alpha:0.5),
|
kcPrimaryColor.withOpacity(0.5),
|
||||||
],
|
],
|
||||||
// quarterly spread
|
// quarterly spread
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class CourseProgressSection extends ViewModelWidget<ProgressViewModel> {
|
||||||
[_buildLearningStatus(), verticalSpaceSmall, _buildActionButton()];
|
[_buildLearningStatus(), verticalSpaceSmall, _buildActionButton()];
|
||||||
|
|
||||||
Widget _buildProgressIndicator() => const CustomLinearProgressIndicator(
|
Widget _buildProgressIndicator() => const CustomLinearProgressIndicator(
|
||||||
progress: 0,
|
progress: 0.5,
|
||||||
activeColor: kcPrimaryColor,
|
activeColor: kcPrimaryColor,
|
||||||
backgroundColor: kcVeryLightGrey,
|
backgroundColor: kcVeryLightGrey,
|
||||||
);
|
);
|
||||||
|
|
@ -111,10 +111,10 @@ class CourseProgressSection extends ViewModelWidget<ProgressViewModel> {
|
||||||
];
|
];
|
||||||
|
|
||||||
Widget _buildWatchedVideos() =>
|
Widget _buildWatchedVideos() =>
|
||||||
const CustomColumn(title: '0/0', subtitle: 'Videos');
|
const CustomColumn(title: '15/25', subtitle: 'Videos');
|
||||||
|
|
||||||
Widget _buildCompletedPractices() =>
|
Widget _buildCompletedPractices() =>
|
||||||
const CustomColumn(title: '0/0', subtitle: 'Practices');
|
const CustomColumn(title: '8/12', subtitle: 'Practices');
|
||||||
|
|
||||||
Widget _buildActionButton() => const CustomElevatedButton(
|
Widget _buildActionButton() => const CustomElevatedButton(
|
||||||
height: 15,
|
height: 15,
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ class LearnCourseTile extends ViewModelWidget<LearnCourseViewModel> {
|
||||||
height: 15,
|
height: 15,
|
||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
onTap: onPracticeTap,
|
onTap: onPracticeTap,
|
||||||
text: 'Take Practices',
|
text: 'View Practices',
|
||||||
backgroundColor: kcWhite,
|
backgroundColor: kcWhite,
|
||||||
borderColor: kcPrimaryColor,
|
borderColor: kcPrimaryColor,
|
||||||
foregroundColor: kcPrimaryColor,
|
foregroundColor: kcPrimaryColor,
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import 'package:yimaru_app/ui/widgets/mini_thumbnail.dart';
|
||||||
|
|
||||||
import '../common/app_colors.dart';
|
import '../common/app_colors.dart';
|
||||||
import '../common/helper_functions.dart';
|
import '../common/helper_functions.dart';
|
||||||
|
|
||||||
import '../common/ui_helpers.dart';
|
import '../common/ui_helpers.dart';
|
||||||
import 'custom_elevated_button.dart';
|
import 'custom_elevated_button.dart';
|
||||||
import 'custom_linear_progress_indicator.dart';
|
import 'custom_linear_progress_indicator.dart';
|
||||||
|
|
|
||||||
|
|
@ -55,9 +55,13 @@ class LearningProgressCard extends StatelessWidget {
|
||||||
color: kcPrimaryColor,
|
color: kcPrimaryColor,
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildTitle() => Text(
|
Widget _buildTitle() => const Text(
|
||||||
'Learn English',
|
'Learn English',
|
||||||
style: style16DG600,
|
style: TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
color: kcDarkGrey,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildSubtitle() => const Text(
|
Widget _buildSubtitle() => const Text(
|
||||||
|
|
@ -67,7 +71,7 @@ class LearningProgressCard extends StatelessWidget {
|
||||||
);
|
);
|
||||||
|
|
||||||
Widget _buildProgressIndicator() => const CustomLinearProgressIndicator(
|
Widget _buildProgressIndicator() => const CustomLinearProgressIndicator(
|
||||||
progress: 0,
|
progress: 0.5,
|
||||||
activeColor: kcPrimaryColor,
|
activeColor: kcPrimaryColor,
|
||||||
backgroundColor: kcVeryLightGrey,
|
backgroundColor: kcVeryLightGrey,
|
||||||
);
|
);
|
||||||
|
|
@ -85,11 +89,11 @@ class LearningProgressCard extends StatelessWidget {
|
||||||
];
|
];
|
||||||
|
|
||||||
Widget _buildWatchedVideos() => const Expanded(
|
Widget _buildWatchedVideos() => const Expanded(
|
||||||
child: CustomColumn(title: '0', subtitle: 'Videos Watched'));
|
child: CustomColumn(title: '120', subtitle: 'Videos Watched'));
|
||||||
Widget _buildCompletedPractices() => const Expanded(
|
Widget _buildCompletedPractices() => const Expanded(
|
||||||
child: CustomColumn(title: '0', subtitle: 'Practices Completed'));
|
child: CustomColumn(title: '85', subtitle: 'Practices Completed'));
|
||||||
Widget _buildTakenQuizzes() => const Expanded(
|
Widget _buildTakenQuizzes() => const Expanded(
|
||||||
child: CustomColumn(title: '0', subtitle: 'Quizzes Taken'));
|
child: CustomColumn(title: '45', subtitle: 'Quizzes Taken'));
|
||||||
|
|
||||||
Widget _buildActionButton() => const CustomElevatedButton(
|
Widget _buildActionButton() => const CustomElevatedButton(
|
||||||
height: 15,
|
height: 15,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
name: yimaru_app
|
name: yimaru_app
|
||||||
version: 0.1.12+14
|
version: 0.1.11+13
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
description: A new Flutter project.
|
description: A new Flutter project.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user