Merge branch 'master' into development_aamir
commit
35f814b74a
Binary file not shown.
After Width: | Height: | Size: 163 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,202 @@
|
||||
import 'dart:async';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_countdown_timer/current_remaining_time.dart';
|
||||
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
|
||||
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||
import 'package:mohem_flutter_app/main.dart';
|
||||
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
|
||||
|
||||
class CountdownTimerForDetailScreen extends StatelessWidget {
|
||||
final int timeToMarathon;
|
||||
final MarathonProvider provider;
|
||||
|
||||
CountdownTimerForDetailScreen({
|
||||
Key? key,
|
||||
required this.provider,
|
||||
required this.timeToMarathon,
|
||||
}) : super(key: key);
|
||||
|
||||
final TextStyle styleTextHome = TextStyle(
|
||||
color: MyColors.white.withOpacity(0.45),
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.w800,
|
||||
letterSpacing: -0.4,
|
||||
);
|
||||
|
||||
final TextStyle styleDigitHome = TextStyle(
|
||||
height: 22 / 27,
|
||||
color: MyColors.white,
|
||||
fontSize: isTablet ? 30 : 15,
|
||||
fontStyle: FontStyle.italic,
|
||||
letterSpacing: -1.44,
|
||||
fontWeight: FontWeight.bold,
|
||||
);
|
||||
|
||||
final TextStyle styleTextMarathon = const TextStyle(
|
||||
fontSize: 10,
|
||||
fontStyle: FontStyle.normal,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: MyColors.grey57Color,
|
||||
letterSpacing: -0.4,
|
||||
);
|
||||
|
||||
final TextStyle styleDigitMarathon = const TextStyle(
|
||||
height: 23 / 24,
|
||||
color: MyColors.darkTextColor,
|
||||
fontSize: 34,
|
||||
letterSpacing: -1.44,
|
||||
fontWeight: FontWeight.bold,
|
||||
);
|
||||
|
||||
Widget buildSeparator() {
|
||||
return AutoSizeText(
|
||||
" : ",
|
||||
maxFontSize: 24,
|
||||
minFontSize: 20,
|
||||
style: styleDigitMarathon,
|
||||
);
|
||||
}
|
||||
|
||||
Widget getTimeDigit(String text) {
|
||||
return AutoSizeText(
|
||||
text,
|
||||
maxFontSize: 24,
|
||||
minFontSize: 20,
|
||||
style: styleDigitMarathon,
|
||||
);
|
||||
}
|
||||
|
||||
Widget getTimeText(String text) {
|
||||
return AutoSizeText(
|
||||
text,
|
||||
minFontSize: 7,
|
||||
maxFontSize: 8,
|
||||
style: styleTextMarathon,
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildEmptyWidget() {
|
||||
return Directionality(
|
||||
textDirection: ui.TextDirection.ltr,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Column(
|
||||
children: <Widget>[
|
||||
getTimeDigit("00"),
|
||||
getTimeText(LocaleKeys.days.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
getTimeDigit("00"),
|
||||
getTimeText(LocaleKeys.hours.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
getTimeDigit("00"),
|
||||
getTimeText(LocaleKeys.minutes.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
getTimeDigit("00"),
|
||||
getTimeText(LocaleKeys.seconds.tr()),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildCountdownTimer(CurrentRemainingTime? time) {
|
||||
if (time == null) {
|
||||
if (!provider.itsMarathonTime) {
|
||||
scheduleMicrotask(() {
|
||||
provider.itsMarathonTime = true;
|
||||
provider.isButtonEnabled = true;
|
||||
provider.startTimerToWaitForMarathon();
|
||||
});
|
||||
}
|
||||
|
||||
return provider.itsMarathonTime
|
||||
? Directionality(
|
||||
textDirection: ui.TextDirection.ltr,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Column(
|
||||
children: <Widget>[
|
||||
getTimeDigit(provider.totalSecondsToWaitForMarathon.toString()),
|
||||
getTimeText(LocaleKeys.seconds.tr()),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: buildEmptyWidget();
|
||||
}
|
||||
|
||||
return Directionality(
|
||||
textDirection: ui.TextDirection.ltr,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Column(
|
||||
children: <Widget>[
|
||||
time.days == null ? getTimeDigit("00") : getTimeDigit(time.days! < 10 ? "0${time.days.toString()}" : time.days.toString()),
|
||||
getTimeText(LocaleKeys.days.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
time.hours == null ? getTimeDigit("00") : getTimeDigit(time.hours! < 10 ? "0${time.hours.toString()}" : time.hours.toString()),
|
||||
getTimeText(LocaleKeys.hours.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
time.min == null ? getTimeDigit("00") : getTimeDigit(time.min! < 10 ? "0${time.min.toString()}" : time.min.toString()),
|
||||
getTimeText(LocaleKeys.minutes.tr()),
|
||||
],
|
||||
),
|
||||
buildSeparator(),
|
||||
Column(
|
||||
children: <Widget>[
|
||||
time.sec == null ? getTimeDigit("00") : getTimeDigit(time.sec! < 10 ? "0${time.sec.toString()}" : time.sec.toString()),
|
||||
getTimeText(LocaleKeys.seconds.tr()),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return CountdownTimer(
|
||||
endTime: timeToMarathon,
|
||||
onEnd: null,
|
||||
widgetBuilder: (BuildContext context, CurrentRemainingTime? time) {
|
||||
return buildCountdownTimer(time);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:lottie/lottie.dart';
|
||||
import 'package:mohem_flutter_app/classes/colors.dart';
|
||||
import 'package:mohem_flutter_app/classes/decorations_helper.dart';
|
||||
import 'package:mohem_flutter_app/classes/lottie_consts.dart';
|
||||
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
||||
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
||||
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
||||
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
||||
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
|
||||
|
||||
class WinnerScreen extends StatelessWidget {
|
||||
const WinnerScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: MyColors.backgroundColor,
|
||||
appBar: AppBarWidget(context, title: LocaleKeys.brainMarathon.tr()),
|
||||
body: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
60.height,
|
||||
Container(
|
||||
width: double.infinity,
|
||||
decoration: MyDecorations.shadowDecoration,
|
||||
padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
height: 200,
|
||||
child: Stack(
|
||||
children: <Widget>[
|
||||
Lottie.asset(
|
||||
MyLottieConsts.celebrate1Lottie,
|
||||
height: 200,
|
||||
),
|
||||
Lottie.asset(
|
||||
MyLottieConsts.celebrate2Lottie,
|
||||
height: 200,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
26.height,
|
||||
SizedBox(
|
||||
height: 50,
|
||||
child: Stack(
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: SvgPicture.asset(
|
||||
"assets/images/winner_ribbon.svg",
|
||||
height: 50,
|
||||
),
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.center,
|
||||
child: "WINNER".toText32(color: MyColors.white, isBold: true).paddingOnly(top: 07),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
12.height,
|
||||
"Muhammad Shrouff".toText22(color: MyColors.grey3AColor),
|
||||
"837436".toText22(color: MyColors.grey57Color),
|
||||
80.height,
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
LocaleKeys.sponsoredBy.tr().toText14(color: MyColors.grey77Color),
|
||||
" Extra".toText14(color: MyColors.darkTextColor, isBold: true),
|
||||
],
|
||||
),
|
||||
5.height,
|
||||
Image.asset(
|
||||
"assets/images/logos/main_mohemm_logo.png",
|
||||
height: 40,
|
||||
fit: BoxFit.fill,
|
||||
width: 150,
|
||||
)
|
||||
],
|
||||
),
|
||||
).paddingOnly(left: 21, right: 21),
|
||||
10.height,
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue