Merge branch 'dev' of https://github.com/refilc/naplo into dev
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 754 KiB |
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 735 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 881 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 809 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 746 B |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 658 KiB |
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 491 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 27 KiB |
@ -187,7 +187,7 @@ class AppTheme {
|
|||||||
accentColor == AccentColor.ogfilc) ||
|
accentColor == AccentColor.ogfilc) ||
|
||||||
!settings.newColors
|
!settings.newColors
|
||||||
? accent
|
? accent
|
||||||
: ColorsUtils().lighten(accent, amount: 0.3);
|
: ColorsUtils().lighten(accent, amount: 0.22);
|
||||||
// Color newScaffoldBg = ColorsUtils().lighten(accent, amount: 0.4);
|
// Color newScaffoldBg = ColorsUtils().lighten(accent, amount: 0.4);
|
||||||
Color newTertiary = (accentColor == AccentColor.adaptive ||
|
Color newTertiary = (accentColor == AccentColor.adaptive ||
|
||||||
accentColor == AccentColor.custom ||
|
accentColor == AccentColor.custom ||
|
||||||
|
@ -27,6 +27,7 @@ class LessonTile extends StatelessWidget {
|
|||||||
this.currentLessonIndicator = true,
|
this.currentLessonIndicator = true,
|
||||||
this.padding,
|
this.padding,
|
||||||
this.contentPadding,
|
this.contentPadding,
|
||||||
|
this.showSubTiles = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
final Lesson lesson;
|
final Lesson lesson;
|
||||||
@ -37,6 +38,7 @@ class LessonTile extends StatelessWidget {
|
|||||||
final bool currentLessonIndicator;
|
final bool currentLessonIndicator;
|
||||||
final EdgeInsetsGeometry? padding;
|
final EdgeInsetsGeometry? padding;
|
||||||
final EdgeInsetsGeometry? contentPadding;
|
final EdgeInsetsGeometry? contentPadding;
|
||||||
|
final bool showSubTiles;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -149,7 +151,8 @@ class LessonTile extends StatelessWidget {
|
|||||||
child: PanelTitle(title: Text(lesson.name)),
|
child: PanelTitle(title: Text(lesson.name)),
|
||||||
),
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: EdgeInsets.only(bottom: subtiles.isEmpty ? 0.0 : 12.0),
|
padding: EdgeInsets.only(
|
||||||
|
bottom: (subtiles.isNotEmpty && showSubTiles) ? 12.0 : 0.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
@ -243,7 +246,7 @@ class LessonTile extends StatelessWidget {
|
|||||||
? accent.withOpacity(.15)
|
? accent.withOpacity(.15)
|
||||||
: Theme.of(context)
|
: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.secondary
|
.tertiary
|
||||||
.withOpacity(.15),
|
.withOpacity(.15),
|
||||||
borderRadius: BorderRadius.circular(10.0),
|
borderRadius: BorderRadius.circular(10.0),
|
||||||
),
|
),
|
||||||
@ -395,7 +398,7 @@ class LessonTile extends StatelessWidget {
|
|||||||
? accent.withOpacity(.15)
|
? accent.withOpacity(.15)
|
||||||
: Theme.of(context)
|
: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.secondary
|
.tertiary
|
||||||
.withOpacity(.15),
|
.withOpacity(.15),
|
||||||
borderRadius: BorderRadius.circular(10.0),
|
borderRadius: BorderRadius.circular(10.0),
|
||||||
),
|
),
|
||||||
@ -446,7 +449,7 @@ class LessonTile extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
|
|
||||||
// Homework & Exams
|
// Homework & Exams
|
||||||
...subtiles,
|
if (showSubTiles) ...subtiles,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -3,7 +3,7 @@ description: "Egy nem hivatalos e-KRÉTA kliens, diákoktól diákoknak."
|
|||||||
homepage: https://refilc.hu
|
homepage: https://refilc.hu
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
|
|
||||||
version: 5.0.0+252
|
version: 5.0.0+253
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.0 <=3.3.2"
|
sdk: ">=2.17.0 <=3.3.2"
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
||||||
|
import 'package:flutter_svg/svg.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:refilc/api/providers/database_provider.dart';
|
import 'package:refilc/api/providers/database_provider.dart';
|
||||||
import 'package:refilc/api/providers/user_provider.dart';
|
import 'package:refilc/api/providers/user_provider.dart';
|
||||||
|
import 'package:refilc/helpers/subject.dart';
|
||||||
|
import 'package:refilc/theme/colors/colors.dart';
|
||||||
|
import 'package:refilc/theme/colors/utils.dart';
|
||||||
import 'package:refilc_kreta_api/models/lesson.dart';
|
import 'package:refilc_kreta_api/models/lesson.dart';
|
||||||
|
import 'package:refilc_mobile_ui/common/bottom_sheet_menu/rounded_bottom_sheet.dart';
|
||||||
import 'package:refilc_mobile_ui/common/panel/panel_button.dart';
|
import 'package:refilc_mobile_ui/common/panel/panel_button.dart';
|
||||||
|
import 'package:refilc_mobile_ui/common/round_border_icon.dart';
|
||||||
import 'package:refilc_mobile_ui/common/viewable.dart';
|
import 'package:refilc_mobile_ui/common/viewable.dart';
|
||||||
import 'package:refilc_mobile_ui/common/widgets/card_handle.dart';
|
import 'package:refilc_mobile_ui/common/widgets/card_handle.dart';
|
||||||
import 'package:refilc/ui/widgets/lesson/lesson_tile.dart';
|
import 'package:refilc/ui/widgets/lesson/lesson_tile.dart';
|
||||||
@ -49,158 +55,164 @@ class LessonViewableState extends State<LessonViewable> {
|
|||||||
|
|
||||||
if (lsn.subject.id == '' || tile.lesson.isEmpty) return tile;
|
if (lsn.subject.id == '' || tile.lesson.isEmpty) return tile;
|
||||||
|
|
||||||
return Viewable(
|
return LessonTile(
|
||||||
tile: tile,
|
lsn,
|
||||||
view: CardHandle(child: LessonView(lsn)),
|
swapDesc: widget.swapDesc,
|
||||||
actions: [
|
onTap: () => TimetableLessonPopup.show(context: context, lesson: lsn),
|
||||||
PanelButton(
|
|
||||||
background: true,
|
|
||||||
title: Text(
|
|
||||||
"edit_lesson".i18n,
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
maxLines: 2,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
|
||||||
|
|
||||||
if (!Provider.of<PlusProvider>(context, listen: false)
|
|
||||||
.hasScope(PremiumScopes.timetableNotes)) {
|
|
||||||
PlusLockedFeaturePopup.show(
|
|
||||||
context: context, feature: PremiumFeature.timetableNotes);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
showDialog(
|
|
||||||
context: context,
|
|
||||||
builder: (context) => StatefulBuilder(builder: (context, setS) {
|
|
||||||
return AlertDialog(
|
|
||||||
shape: const RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(14.0))),
|
|
||||||
title: Text("edit_lesson".i18n),
|
|
||||||
content: Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
// description
|
|
||||||
TextField(
|
|
||||||
controller: _descTxt,
|
|
||||||
decoration: InputDecoration(
|
|
||||||
border: OutlineInputBorder(
|
|
||||||
borderSide: const BorderSide(
|
|
||||||
color: Colors.grey, width: 1.5),
|
|
||||||
borderRadius: BorderRadius.circular(12.0),
|
|
||||||
),
|
|
||||||
focusedBorder: OutlineInputBorder(
|
|
||||||
borderSide: const BorderSide(
|
|
||||||
color: Colors.grey, width: 1.5),
|
|
||||||
borderRadius: BorderRadius.circular(12.0),
|
|
||||||
),
|
|
||||||
contentPadding:
|
|
||||||
const EdgeInsets.symmetric(horizontal: 12.0),
|
|
||||||
hintText: 'l_desc'.i18n,
|
|
||||||
suffixIcon: IconButton(
|
|
||||||
icon: const Icon(
|
|
||||||
FeatherIcons.x,
|
|
||||||
color: Colors.grey,
|
|
||||||
size: 18.0,
|
|
||||||
),
|
|
||||||
onPressed: () {
|
|
||||||
setState(() {
|
|
||||||
_descTxt.text = '';
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// const SizedBox(
|
|
||||||
// height: 14.0,
|
|
||||||
// ),
|
|
||||||
// // class
|
|
||||||
// TextField(
|
|
||||||
// controller: _descTxt,
|
|
||||||
// onEditingComplete: () async {
|
|
||||||
// // SharedTheme? theme = await shareProvider.getThemeById(
|
|
||||||
// // context,
|
|
||||||
// // id: _paintId.text.replaceAll(' ', ''),
|
|
||||||
// // );
|
|
||||||
|
|
||||||
// // if (theme != null) {
|
|
||||||
// // // set theme variable
|
|
||||||
// // newThemeByID = theme;
|
|
||||||
|
|
||||||
// // _paintId.clear();
|
|
||||||
// // } else {
|
|
||||||
// // ScaffoldMessenger.of(context).showSnackBar(
|
|
||||||
// // CustomSnackBar(
|
|
||||||
// // content: Text("theme_not_found".i18n,
|
|
||||||
// // style: const TextStyle(color: Colors.white)),
|
|
||||||
// // backgroundColor: AppColors.of(context).red,
|
|
||||||
// // context: context,
|
|
||||||
// // ),
|
|
||||||
// // );
|
|
||||||
// // }
|
|
||||||
// },
|
|
||||||
// decoration: InputDecoration(
|
|
||||||
// border: OutlineInputBorder(
|
|
||||||
// borderSide: const BorderSide(
|
|
||||||
// color: Colors.grey, width: 1.5),
|
|
||||||
// borderRadius: BorderRadius.circular(12.0),
|
|
||||||
// ),
|
|
||||||
// focusedBorder: OutlineInputBorder(
|
|
||||||
// borderSide: const BorderSide(
|
|
||||||
// color: Colors.grey, width: 1.5),
|
|
||||||
// borderRadius: BorderRadius.circular(12.0),
|
|
||||||
// ),
|
|
||||||
// contentPadding:
|
|
||||||
// const EdgeInsets.symmetric(horizontal: 12.0),
|
|
||||||
// hintText: 'l_desc'.i18n,
|
|
||||||
// suffixIcon: IconButton(
|
|
||||||
// icon: const Icon(
|
|
||||||
// FeatherIcons.x,
|
|
||||||
// color: Colors.grey,
|
|
||||||
// size: 18.0,
|
|
||||||
// ),
|
|
||||||
// onPressed: () {
|
|
||||||
// setState(() {
|
|
||||||
// _descTxt.text = '';
|
|
||||||
// });
|
|
||||||
// },
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
actions: [
|
|
||||||
TextButton(
|
|
||||||
child: Text(
|
|
||||||
"cancel".i18n,
|
|
||||||
style: const TextStyle(fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
onPressed: () {
|
|
||||||
Navigator.of(context).maybePop();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
TextButton(
|
|
||||||
child: Text(
|
|
||||||
"done".i18n,
|
|
||||||
style: const TextStyle(fontWeight: FontWeight.w500),
|
|
||||||
),
|
|
||||||
onPressed: () async {
|
|
||||||
saveLesson();
|
|
||||||
|
|
||||||
Navigator.of(context).pop();
|
|
||||||
setState(() {});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// return Viewable(
|
||||||
|
// tile: tile,
|
||||||
|
// view: CardHandle(child: LessonView(lsn)),
|
||||||
|
// actions: [
|
||||||
|
// PanelButton(
|
||||||
|
// background: true,
|
||||||
|
// title: Text(
|
||||||
|
// "edit_lesson".i18n,
|
||||||
|
// textAlign: TextAlign.center,
|
||||||
|
// maxLines: 2,
|
||||||
|
// overflow: TextOverflow.ellipsis,
|
||||||
|
// ),
|
||||||
|
// onPressed: () {
|
||||||
|
// Navigator.of(context, rootNavigator: true).pop();
|
||||||
|
|
||||||
|
// if (!Provider.of<PlusProvider>(context, listen: false)
|
||||||
|
// .hasScope(PremiumScopes.timetableNotes)) {
|
||||||
|
// PlusLockedFeaturePopup.show(
|
||||||
|
// context: context, feature: PremiumFeature.timetableNotes);
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// showDialog(
|
||||||
|
// context: context,
|
||||||
|
// builder: (context) => StatefulBuilder(builder: (context, setS) {
|
||||||
|
// return AlertDialog(
|
||||||
|
// shape: const RoundedRectangleBorder(
|
||||||
|
// borderRadius: BorderRadius.all(Radius.circular(14.0))),
|
||||||
|
// title: Text("edit_lesson".i18n),
|
||||||
|
// content: Column(
|
||||||
|
// mainAxisSize: MainAxisSize.min,
|
||||||
|
// children: [
|
||||||
|
// // description
|
||||||
|
// TextField(
|
||||||
|
// controller: _descTxt,
|
||||||
|
// decoration: InputDecoration(
|
||||||
|
// border: OutlineInputBorder(
|
||||||
|
// borderSide: const BorderSide(
|
||||||
|
// color: Colors.grey, width: 1.5),
|
||||||
|
// borderRadius: BorderRadius.circular(12.0),
|
||||||
|
// ),
|
||||||
|
// focusedBorder: OutlineInputBorder(
|
||||||
|
// borderSide: const BorderSide(
|
||||||
|
// color: Colors.grey, width: 1.5),
|
||||||
|
// borderRadius: BorderRadius.circular(12.0),
|
||||||
|
// ),
|
||||||
|
// contentPadding:
|
||||||
|
// const EdgeInsets.symmetric(horizontal: 12.0),
|
||||||
|
// hintText: 'l_desc'.i18n,
|
||||||
|
// suffixIcon: IconButton(
|
||||||
|
// icon: const Icon(
|
||||||
|
// FeatherIcons.x,
|
||||||
|
// color: Colors.grey,
|
||||||
|
// size: 18.0,
|
||||||
|
// ),
|
||||||
|
// onPressed: () {
|
||||||
|
// setState(() {
|
||||||
|
// _descTxt.text = '';
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// // const SizedBox(
|
||||||
|
// // height: 14.0,
|
||||||
|
// // ),
|
||||||
|
// // // class
|
||||||
|
// // TextField(
|
||||||
|
// // controller: _descTxt,
|
||||||
|
// // onEditingComplete: () async {
|
||||||
|
// // // SharedTheme? theme = await shareProvider.getThemeById(
|
||||||
|
// // // context,
|
||||||
|
// // // id: _paintId.text.replaceAll(' ', ''),
|
||||||
|
// // // );
|
||||||
|
|
||||||
|
// // // if (theme != null) {
|
||||||
|
// // // // set theme variable
|
||||||
|
// // // newThemeByID = theme;
|
||||||
|
|
||||||
|
// // // _paintId.clear();
|
||||||
|
// // // } else {
|
||||||
|
// // // ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
// // // CustomSnackBar(
|
||||||
|
// // // content: Text("theme_not_found".i18n,
|
||||||
|
// // // style: const TextStyle(color: Colors.white)),
|
||||||
|
// // // backgroundColor: AppColors.of(context).red,
|
||||||
|
// // // context: context,
|
||||||
|
// // // ),
|
||||||
|
// // // );
|
||||||
|
// // // }
|
||||||
|
// // },
|
||||||
|
// // decoration: InputDecoration(
|
||||||
|
// // border: OutlineInputBorder(
|
||||||
|
// // borderSide: const BorderSide(
|
||||||
|
// // color: Colors.grey, width: 1.5),
|
||||||
|
// // borderRadius: BorderRadius.circular(12.0),
|
||||||
|
// // ),
|
||||||
|
// // focusedBorder: OutlineInputBorder(
|
||||||
|
// // borderSide: const BorderSide(
|
||||||
|
// // color: Colors.grey, width: 1.5),
|
||||||
|
// // borderRadius: BorderRadius.circular(12.0),
|
||||||
|
// // ),
|
||||||
|
// // contentPadding:
|
||||||
|
// // const EdgeInsets.symmetric(horizontal: 12.0),
|
||||||
|
// // hintText: 'l_desc'.i18n,
|
||||||
|
// // suffixIcon: IconButton(
|
||||||
|
// // icon: const Icon(
|
||||||
|
// // FeatherIcons.x,
|
||||||
|
// // color: Colors.grey,
|
||||||
|
// // size: 18.0,
|
||||||
|
// // ),
|
||||||
|
// // onPressed: () {
|
||||||
|
// // setState(() {
|
||||||
|
// // _descTxt.text = '';
|
||||||
|
// // });
|
||||||
|
// // },
|
||||||
|
// // ),
|
||||||
|
// // ),
|
||||||
|
// // ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// actions: [
|
||||||
|
// TextButton(
|
||||||
|
// child: Text(
|
||||||
|
// "cancel".i18n,
|
||||||
|
// style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
// ),
|
||||||
|
// onPressed: () {
|
||||||
|
// Navigator.of(context).maybePop();
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// TextButton(
|
||||||
|
// child: Text(
|
||||||
|
// "done".i18n,
|
||||||
|
// style: const TextStyle(fontWeight: FontWeight.w500),
|
||||||
|
// ),
|
||||||
|
// onPressed: () async {
|
||||||
|
// saveLesson();
|
||||||
|
|
||||||
|
// Navigator.of(context).pop();
|
||||||
|
// setState(() {});
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
void saveLesson() async {
|
void saveLesson() async {
|
||||||
@ -218,3 +230,197 @@ class LessonViewableState extends State<LessonViewable> {
|
|||||||
.storeCustomLessonDescriptions(lessonDesc, userId: user.id!);
|
.storeCustomLessonDescriptions(lessonDesc, userId: user.id!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class TimetableLessonPopup extends StatelessWidget {
|
||||||
|
const TimetableLessonPopup({super.key, required this.lesson});
|
||||||
|
|
||||||
|
final Lesson lesson;
|
||||||
|
|
||||||
|
static void show({
|
||||||
|
required BuildContext context,
|
||||||
|
required Lesson lesson,
|
||||||
|
}) =>
|
||||||
|
showRoundedModalBottomSheet(
|
||||||
|
context,
|
||||||
|
child: TimetableLessonPopup(
|
||||||
|
lesson: lesson,
|
||||||
|
),
|
||||||
|
showHandle: false,
|
||||||
|
);
|
||||||
|
|
||||||
|
// IconData _getIcon() => _featureLevels[feature] == PremiumFeatureLevel.cap
|
||||||
|
// ? FilcIcons.kupak
|
||||||
|
// : _featureLevels[feature] == PremiumFeatureLevel.ink
|
||||||
|
// ? FilcIcons.tinta
|
||||||
|
// : FilcIcons.tinta;
|
||||||
|
// Color _getColor(BuildContext context) =>
|
||||||
|
// _featureLevels[feature] == PremiumFeatureLevel.gold
|
||||||
|
// ? const Color(0xFFC89B08)
|
||||||
|
// : Theme.of(context).brightness == Brightness.light
|
||||||
|
// ? const Color(0xff691A9B)
|
||||||
|
// : const Color(0xffA66FC8);
|
||||||
|
// String? _getAsset() => _featureAssets[feature];
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).scaffoldBackgroundColor,
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(12.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
SvgPicture.asset(
|
||||||
|
"assets/svg/mesh_bg.svg",
|
||||||
|
// ignore: deprecated_member_use
|
||||||
|
color: ColorsUtils().fade(
|
||||||
|
context, Theme.of(context).scaffoldBackgroundColor,
|
||||||
|
darkenAmount: 0.1, lightenAmount: 0.1),
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(18.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: 40,
|
||||||
|
height: 4,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: ColorsUtils().fade(
|
||||||
|
context, Theme.of(context).scaffoldBackgroundColor,
|
||||||
|
darkenAmount: 0.2, lightenAmount: 0.2),
|
||||||
|
borderRadius: BorderRadius.circular(
|
||||||
|
2.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 38.0,
|
||||||
|
),
|
||||||
|
RoundBorderIcon(
|
||||||
|
icon: Icon(
|
||||||
|
SubjectIcon.resolveVariant(
|
||||||
|
context: context, subject: lesson.subject),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 55.0,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).colorScheme.background,
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(12.0),
|
||||||
|
bottom: Radius.circular(6.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
padding: const EdgeInsets.all(14.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'6:09 - 4:20',
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.of(context).text.withOpacity(0.85),
|
||||||
|
fontSize: 14.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 12.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
lesson.name,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.of(context).text,
|
||||||
|
fontSize: 20.0,
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 8.0,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
lesson.teacher.name,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.of(context).text.withOpacity(0.9),
|
||||||
|
fontSize: 14.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 6.0,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).colorScheme.background,
|
||||||
|
borderRadius: const BorderRadius.vertical(
|
||||||
|
top: Radius.circular(6.0),
|
||||||
|
bottom: Radius.circular(12.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
padding: const EdgeInsets.all(14.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
lesson.description,
|
||||||
|
style: TextStyle(
|
||||||
|
color: AppColors.of(context).text.withOpacity(0.9),
|
||||||
|
fontSize: 14.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 24.0,
|
||||||
|
),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(context, rootNavigator: true)
|
||||||
|
.pushReplacementNamed('/');
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Theme.of(context).colorScheme.background,
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
),
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'view_subject'.i18n,
|
||||||
|
style: TextStyle(
|
||||||
|
color:
|
||||||
|
AppColors.of(context).text.withOpacity(0.9),
|
||||||
|
fontSize: 18.0,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -362,6 +362,7 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
|
|
||||||
List<Absence> unexcused = [];
|
List<Absence> unexcused = [];
|
||||||
List<Absence> excused = [];
|
List<Absence> excused = [];
|
||||||
|
List<Absence> pending = [];
|
||||||
|
|
||||||
List<double> absencePositions = [];
|
List<double> absencePositions = [];
|
||||||
List<Color> finalChartColors = [];
|
List<Color> finalChartColors = [];
|
||||||
@ -375,13 +376,14 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
.where((e) =>
|
.where((e) =>
|
||||||
e.delay == 0 && e.state == Justification.excused)
|
e.delay == 0 && e.state == Justification.excused)
|
||||||
.toList();
|
.toList();
|
||||||
|
pending = absenceProvider.absences
|
||||||
|
.where((e) =>
|
||||||
|
e.delay == 0 && e.state == Justification.pending)
|
||||||
|
.toList();
|
||||||
|
|
||||||
value1 = excused.length;
|
value1 = excused.length;
|
||||||
value2 = unexcused.length;
|
value2 = unexcused.length;
|
||||||
value3 = absenceProvider.absences
|
value3 = pending.length;
|
||||||
.where((e) =>
|
|
||||||
e.delay == 0 && e.state == Justification.pending)
|
|
||||||
.length;
|
|
||||||
title1 = "stat_1".i18n;
|
title1 = "stat_1".i18n;
|
||||||
title2 = "stat_2".i18n;
|
title2 = "stat_2".i18n;
|
||||||
suffix = " ${"hr".i18n}";
|
suffix = " ${"hr".i18n}";
|
||||||
@ -394,15 +396,15 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
.where((e) =>
|
.where((e) =>
|
||||||
e.delay != 0 && e.state == Justification.excused)
|
e.delay != 0 && e.state == Justification.excused)
|
||||||
.toList();
|
.toList();
|
||||||
|
pending = absenceProvider.absences
|
||||||
|
.where((e) =>
|
||||||
|
e.delay != 0 && e.state == Justification.pending)
|
||||||
|
.toList();
|
||||||
|
|
||||||
value1 = excused.map((e) => e.delay).fold(0, (a, b) => a + b);
|
value1 = excused.map((e) => e.delay).fold(0, (a, b) => a + b);
|
||||||
value2 =
|
value2 =
|
||||||
unexcused.map((e) => e.delay).fold(0, (a, b) => a + b);
|
unexcused.map((e) => e.delay).fold(0, (a, b) => a + b);
|
||||||
value3 = absenceProvider.absences
|
value3 = pending.map((e) => e.delay).fold(0, (a, b) => a + b);
|
||||||
.where((e) =>
|
|
||||||
e.delay != 0 && e.state == Justification.pending)
|
|
||||||
.map((e) => e.delay)
|
|
||||||
.fold(0, (a, b) => a + b);
|
|
||||||
title1 = "stat_3".i18n;
|
title1 = "stat_3".i18n;
|
||||||
title2 = "stat_4".i18n;
|
title2 = "stat_4".i18n;
|
||||||
suffix = " ${"min".i18n}";
|
suffix = " ${"min".i18n}";
|
||||||
@ -417,7 +419,7 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
int barTotal =
|
int barTotal =
|
||||||
DateTime.now().difference(DateTime(yr, 09, 01)).inDays;
|
DateTime.now().difference(DateTime(yr, 09, 01)).inDays;
|
||||||
|
|
||||||
[...unexcused, ...excused].forEachIndexed((i, a) {
|
[...unexcused, ...excused, ...pending].forEachIndexed((i, a) {
|
||||||
int abs = DateTime.now().difference(a.date).inDays;
|
int abs = DateTime.now().difference(a.date).inDays;
|
||||||
|
|
||||||
double startPos = (barTotal - abs) / barTotal;
|
double startPos = (barTotal - abs) / barTotal;
|
||||||
@ -435,11 +437,14 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
end: endPos,
|
end: endPos,
|
||||||
color: a.state == Justification.excused
|
color: a.state == Justification.excused
|
||||||
? Colors.green
|
? Colors.green
|
||||||
: Colors.red,
|
: a.state == Justification.unexcused
|
||||||
|
? Colors.red
|
||||||
|
: Colors.orange,
|
||||||
));
|
));
|
||||||
if ([...unexcused, ...excused].length > i + 1) {
|
if ([...unexcused, ...excused, ...pending].length > i + 1) {
|
||||||
int nextAbs = DateTime.now()
|
int nextAbs = DateTime.now()
|
||||||
.difference([...unexcused, ...excused][i + 1].date)
|
.difference(
|
||||||
|
[...unexcused, ...excused, ...pending][i + 1].date)
|
||||||
.inDays;
|
.inDays;
|
||||||
|
|
||||||
double nextStartPos = (barTotal - nextAbs) / barTotal;
|
double nextStartPos = (barTotal - nextAbs) / barTotal;
|
||||||
@ -454,7 +459,8 @@ class AbsencesPageState extends State<AbsencesPage>
|
|||||||
|
|
||||||
// print(value2.toString() + '-total');
|
// print(value2.toString() + '-total');
|
||||||
// print(absenceChartData.length.toString() + '-chartdata');
|
// print(absenceChartData.length.toString() + '-chartdata');
|
||||||
if ((i + 1 == [...unexcused, ...excused].length) &&
|
if ((i + 1 ==
|
||||||
|
[...unexcused, ...excused, ...pending].length) &&
|
||||||
endPos < 0.999) {
|
endPos < 0.999) {
|
||||||
absenceChartData.add(AbsenceChartData(
|
absenceChartData.add(AbsenceChartData(
|
||||||
start: endPos,
|
start: endPos,
|
||||||
|
@ -19,6 +19,7 @@ import 'package:refilc_kreta_api/models/grade.dart';
|
|||||||
import 'package:refilc_kreta_api/models/subject.dart';
|
import 'package:refilc_kreta_api/models/subject.dart';
|
||||||
import 'package:refilc_mobile_ui/common/average_display.dart';
|
import 'package:refilc_mobile_ui/common/average_display.dart';
|
||||||
import 'package:refilc_mobile_ui/common/bottom_sheet_menu/rounded_bottom_sheet.dart';
|
import 'package:refilc_mobile_ui/common/bottom_sheet_menu/rounded_bottom_sheet.dart';
|
||||||
|
import 'package:refilc_mobile_ui/common/empty.dart';
|
||||||
import 'package:refilc_mobile_ui/common/filter_bar.dart';
|
import 'package:refilc_mobile_ui/common/filter_bar.dart';
|
||||||
import 'package:refilc_mobile_ui/common/panel/panel.dart';
|
import 'package:refilc_mobile_ui/common/panel/panel.dart';
|
||||||
import 'package:refilc_mobile_ui/common/splitted_panel/splitted_panel.dart';
|
import 'package:refilc_mobile_ui/common/splitted_panel/splitted_panel.dart';
|
||||||
@ -281,7 +282,7 @@ class _GradeSubjectViewState extends State<GradeSubjectView>
|
|||||||
title: Text("exams".i18n),
|
title: Text("exams".i18n),
|
||||||
children: _tiles,
|
children: _tiles,
|
||||||
))
|
))
|
||||||
: const SizedBox(),
|
: const Empty(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -213,8 +213,8 @@ class HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
// TODO: REMOVE IN PRODUCTION BUILD!!!
|
// TODO: REMOVE IN PRODUCTION BUILD!!!
|
||||||
print(_liveCard.currentState);
|
// print(_liveCard.currentState);
|
||||||
_liveCard.currentState = LiveCardState.morning;
|
_liveCard.currentState = LiveCardState.duringLesson;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
body: Stack(
|
body: Stack(
|
||||||
@ -326,9 +326,11 @@ class HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
expandedHeight: _liveCardAnimation.value *
|
expandedHeight: _liveCardAnimation.value *
|
||||||
(_liveCard.currentState == LiveCardState.morning
|
(_liveCard.currentState == LiveCardState.morning
|
||||||
? 274.0
|
? 274.0
|
||||||
: (_liveCard.currentState ==
|
: ((_liveCard.currentState ==
|
||||||
LiveCardState.duringLesson
|
LiveCardState.duringLesson ||
|
||||||
? 288.0
|
_liveCard.currentState ==
|
||||||
|
LiveCardState.duringBreak)
|
||||||
|
? 292.0
|
||||||
: 238.0)),
|
: 238.0)),
|
||||||
|
|
||||||
// Live Card
|
// Live Card
|
||||||
@ -340,14 +342,21 @@ class HomePageState extends State<HomePage> with TickerProviderStateMixin {
|
|||||||
top: ((_liveCard.currentState ==
|
top: ((_liveCard.currentState ==
|
||||||
LiveCardState.morning ||
|
LiveCardState.morning ||
|
||||||
_liveCard.currentState ==
|
_liveCard.currentState ==
|
||||||
LiveCardState.duringLesson)
|
LiveCardState.duringLesson ||
|
||||||
|
_liveCard.currentState ==
|
||||||
|
LiveCardState.duringBreak)
|
||||||
? 0.0
|
? 0.0
|
||||||
: 62.0) +
|
: 62.0) +
|
||||||
MediaQuery.of(context).padding.top,
|
MediaQuery.of(context).padding.top,
|
||||||
bottom: _liveCard.currentState ==
|
bottom: (_liveCard.currentState ==
|
||||||
LiveCardState.morning
|
LiveCardState.morning)
|
||||||
? 44.0
|
? 44.0
|
||||||
: 52.0,
|
: ((_liveCard.currentState ==
|
||||||
|
LiveCardState.duringLesson ||
|
||||||
|
_liveCard.currentState ==
|
||||||
|
LiveCardState.duringBreak)
|
||||||
|
? 55.0
|
||||||
|
: 52.0),
|
||||||
),
|
),
|
||||||
child: Transform.scale(
|
child: Transform.scale(
|
||||||
scale: _liveCardAnimation.value,
|
scale: _liveCardAnimation.value,
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
import 'package:animations/animations.dart';
|
import 'package:animations/animations.dart';
|
||||||
import 'package:refilc/api/providers/user_provider.dart';
|
import 'package:refilc/api/providers/user_provider.dart';
|
||||||
import 'package:refilc/helpers/subject.dart';
|
import 'package:refilc/helpers/subject.dart';
|
||||||
import 'package:refilc/icons/filc_icons.dart';
|
|
||||||
import 'package:refilc/models/settings.dart';
|
import 'package:refilc/models/settings.dart';
|
||||||
import 'package:refilc/theme/colors/colors.dart';
|
import 'package:refilc/theme/colors/colors.dart';
|
||||||
import 'package:refilc/ui/widgets/lesson/lesson_tile.dart';
|
import 'package:refilc/ui/widgets/lesson/lesson_tile.dart';
|
||||||
@ -11,7 +10,9 @@ import 'package:refilc_kreta_api/models/category.dart';
|
|||||||
import 'package:refilc_kreta_api/models/lesson.dart';
|
import 'package:refilc_kreta_api/models/lesson.dart';
|
||||||
import 'package:refilc_kreta_api/models/subject.dart';
|
import 'package:refilc_kreta_api/models/subject.dart';
|
||||||
import 'package:refilc_kreta_api/models/teacher.dart';
|
import 'package:refilc_kreta_api/models/teacher.dart';
|
||||||
|
import 'package:refilc_mobile_ui/common/panel/panel.dart';
|
||||||
import 'package:refilc_mobile_ui/common/progress_bar.dart';
|
import 'package:refilc_mobile_ui/common/progress_bar.dart';
|
||||||
|
import 'package:refilc_mobile_ui/common/round_border_icon.dart';
|
||||||
// import 'package:refilc_kreta_api/models/category.dart';
|
// import 'package:refilc_kreta_api/models/category.dart';
|
||||||
// import 'package:refilc_kreta_api/models/lesson.dart';
|
// import 'package:refilc_kreta_api/models/lesson.dart';
|
||||||
// import 'package:refilc_kreta_api/models/subject.dart';
|
// import 'package:refilc_kreta_api/models/subject.dart';
|
||||||
@ -70,8 +71,8 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
|
|
||||||
// test
|
// test
|
||||||
// TODO: REMOVE IN PRODUCTION BUILD!!!
|
// TODO: REMOVE IN PRODUCTION BUILD!!!
|
||||||
liveCard.currentState = LiveCardState.morning;
|
liveCard.currentState = LiveCardState.duringLesson;
|
||||||
liveCard.nextLesson = Lesson(
|
liveCard.currentLesson = Lesson(
|
||||||
date: DateTime.now().add(Duration(
|
date: DateTime.now().add(Duration(
|
||||||
minutes: 30,
|
minutes: 30,
|
||||||
)),
|
)),
|
||||||
@ -93,7 +94,7 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
);
|
);
|
||||||
|
|
||||||
// liveCard.nextLesson = liveCard.currentLesson;
|
liveCard.nextLesson = liveCard.currentLesson;
|
||||||
|
|
||||||
// final dt = DateTime(2024, 3, 22, 17, 12, 1, 1, 1);
|
// final dt = DateTime(2024, 3, 22, 17, 12, 1, 1, 1);
|
||||||
|
|
||||||
@ -304,7 +305,7 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
width: 10,
|
width: 10,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'${DateFormat('H:mm').format(liveCard.nextLesson!.start)}-${DateFormat('H:mm').format(liveCard.nextLesson!.end)}',
|
'${DateFormat('H:mm').format(liveCard.nextLesson!.start)} - ${DateFormat('H:mm').format(liveCard.nextLesson!.end)}',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 12.5,
|
fontSize: 12.5,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
@ -411,8 +412,9 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
swapRoom: true,
|
swapRoom: true,
|
||||||
currentLessonIndicator: false,
|
currentLessonIndicator: false,
|
||||||
padding:
|
padding:
|
||||||
const EdgeInsets.only(top: 8.0, bottom: 4.0),
|
const EdgeInsets.only(top: 6.0, bottom: 4.0),
|
||||||
contentPadding: EdgeInsets.zero,
|
contentPadding: EdgeInsets.zero,
|
||||||
|
showSubTiles: false,
|
||||||
),
|
),
|
||||||
if (!(nextSubject == null &&
|
if (!(nextSubject == null &&
|
||||||
progressCurrent == null &&
|
progressCurrent == null &&
|
||||||
@ -523,7 +525,7 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.secondary
|
.tertiary
|
||||||
.withOpacity(.15),
|
.withOpacity(.15),
|
||||||
borderRadius:
|
borderRadius:
|
||||||
BorderRadius.circular(10.0),
|
BorderRadius.circular(10.0),
|
||||||
@ -546,7 +548,7 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
width: 10,
|
width: 10,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'${DateFormat('H:mm').format(liveCard.nextLesson!.start)}-${DateFormat('H:mm').format(liveCard.nextLesson!.end)}',
|
'${DateFormat('H:mm').format(liveCard.nextLesson!.start)} - ${DateFormat('H:mm').format(liveCard.nextLesson!.end)}',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 12.5,
|
fontSize: 12.5,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
@ -566,12 +568,17 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case LiveCardState.duringBreak:
|
case LiveCardState.duringBreak:
|
||||||
final iconFloorMap = {
|
if (liveCard.prevLesson == null || liveCard.nextLesson == null) {
|
||||||
"to room": FeatherIcons.chevronsRight,
|
child = Container();
|
||||||
"up floor": FilcIcons.upstairs,
|
break;
|
||||||
"down floor": FilcIcons.downstairs,
|
}
|
||||||
"ground floor": FilcIcons.downstairs,
|
|
||||||
};
|
// final iconFloorMap = {
|
||||||
|
// "to room": FeatherIcons.chevronsRight,
|
||||||
|
// "up floor": FilcIcons.upstairs,
|
||||||
|
// "down floor": FilcIcons.downstairs,
|
||||||
|
// "ground floor": FilcIcons.downstairs,
|
||||||
|
// };
|
||||||
|
|
||||||
final diff = liveCard.getFloorDifference();
|
final diff = liveCard.getFloorDifference();
|
||||||
|
|
||||||
@ -587,36 +594,352 @@ class LiveCardStateA extends State<LiveCard> {
|
|||||||
|
|
||||||
final showMinutes = maxTime - elapsedTime > 60;
|
final showMinutes = maxTime - elapsedTime > 60;
|
||||||
|
|
||||||
|
// child = LiveCardWidget(
|
||||||
|
// key: const Key('livecard.duringBreak'),
|
||||||
|
// title: "break".i18n,
|
||||||
|
// icon: iconFloorMap[diff],
|
||||||
|
// description: liveCard.nextLesson!.room != liveCard.prevLesson!.room
|
||||||
|
// ? Text("go $diff".i18n.fill([
|
||||||
|
// diff != "to room"
|
||||||
|
// ? (liveCard.nextLesson!.getFloor() ?? 0)
|
||||||
|
// : liveCard.nextLesson!.room
|
||||||
|
// ]))
|
||||||
|
// : Text("stay".i18n),
|
||||||
|
// nextSubject: liveCard.nextLesson?.subject.renamedTo ??
|
||||||
|
// liveCard.nextLesson?.subject.name.capital(),
|
||||||
|
// nextSubjectItalic: liveCard.nextLesson?.subject.isRenamed == true &&
|
||||||
|
// settingsProvider.renamedSubjectsItalics,
|
||||||
|
// nextRoom: diff != "to room" ? liveCard.nextLesson?.room : null,
|
||||||
|
// progressMax: showMinutes ? maxTime / 60 : maxTime,
|
||||||
|
// progressCurrent: showMinutes ? elapsedTime / 60 : elapsedTime,
|
||||||
|
// progressAccuracy:
|
||||||
|
// showMinutes ? ProgressAccuracy.minutes : ProgressAccuracy.seconds,
|
||||||
|
// onProgressTap: () {
|
||||||
|
// showDialog(
|
||||||
|
// barrierColor: Colors.black,
|
||||||
|
// context: context,
|
||||||
|
// builder: (context) => HeadsUpCountdown(
|
||||||
|
// maxTime: maxTime,
|
||||||
|
// elapsedTime: elapsedTime,
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
|
||||||
|
var nextSubject = liveCard.nextLesson?.subject.renamedTo ??
|
||||||
|
liveCard.nextLesson?.subject.name.capital();
|
||||||
|
var nextSubjectItalic =
|
||||||
|
liveCard.nextLesson?.subject.isRenamed == true &&
|
||||||
|
settingsProvider.renamedSubjectsItalics;
|
||||||
|
// var nextRoom = diff != "to room" ? liveCard.nextLesson?.room : null;
|
||||||
|
var progressMax = showMinutes ? maxTime / 60 : maxTime;
|
||||||
|
var progressCurrent = showMinutes ? elapsedTime / 60 : elapsedTime;
|
||||||
|
var progressAccuracy =
|
||||||
|
showMinutes ? ProgressAccuracy.minutes : ProgressAccuracy.seconds;
|
||||||
|
|
||||||
|
// Lesson breakLesson = Lesson(
|
||||||
|
// date: DateTime.now(),
|
||||||
|
// start: liveCard.prevLesson!.end,
|
||||||
|
// end: liveCard.nextLesson!.start,
|
||||||
|
// name: 'break'.i18n,
|
||||||
|
// description: 'Menj a XY terembe...',
|
||||||
|
// );
|
||||||
|
|
||||||
child = LiveCardWidget(
|
child = LiveCardWidget(
|
||||||
key: const Key('livecard.duringBreak'),
|
key: const Key('livecard.duringBreak'),
|
||||||
title: "break".i18n,
|
children: liveCard.nextLesson != null
|
||||||
icon: iconFloorMap[diff],
|
? [
|
||||||
description: liveCard.nextLesson!.room != liveCard.prevLesson!.room
|
SplittedPanel(
|
||||||
? Text("go $diff".i18n.fill([
|
hasShadow: false,
|
||||||
diff != "to room"
|
padding: EdgeInsets.zero,
|
||||||
? (liveCard.nextLesson!.getFloor() ?? 0)
|
cardPadding: EdgeInsets.zero,
|
||||||
: liveCard.nextLesson!.room
|
spacing: 8.0,
|
||||||
]))
|
children: [
|
||||||
: Text("stay".i18n),
|
SplittedPanel(
|
||||||
nextSubject: liveCard.nextLesson?.subject.renamedTo ??
|
hasShadow: false,
|
||||||
liveCard.nextLesson?.subject.name.capital(),
|
isTransparent: true,
|
||||||
nextSubjectItalic: liveCard.nextLesson?.subject.isRenamed == true &&
|
padding: EdgeInsets.zero,
|
||||||
settingsProvider.renamedSubjectsItalics,
|
cardPadding: const EdgeInsets.symmetric(
|
||||||
nextRoom: diff != "to room" ? liveCard.nextLesson?.room : null,
|
horizontal: 12.0,
|
||||||
progressMax: showMinutes ? maxTime / 60 : maxTime,
|
vertical: 0.0,
|
||||||
progressCurrent: showMinutes ? elapsedTime / 60 : elapsedTime,
|
),
|
||||||
progressAccuracy:
|
spacing: 0.0,
|
||||||
showMinutes ? ProgressAccuracy.minutes : ProgressAccuracy.seconds,
|
children: [
|
||||||
onProgressTap: () {
|
// LessonTile(
|
||||||
showDialog(
|
// liveCard.currentLesson!,
|
||||||
barrierColor: Colors.black,
|
// swapRoom: true,
|
||||||
context: context,
|
// currentLessonIndicator: false,
|
||||||
builder: (context) => HeadsUpCountdown(
|
// padding:
|
||||||
maxTime: maxTime,
|
// const EdgeInsets.only(top: 8.0, bottom: 4.0),
|
||||||
elapsedTime: elapsedTime,
|
// contentPadding: EdgeInsets.zero,
|
||||||
),
|
// ),
|
||||||
);
|
Padding(
|
||||||
},
|
padding:
|
||||||
|
const EdgeInsets.only(top: 8.0, bottom: 4.0),
|
||||||
|
child: Material(
|
||||||
|
color: Colors.transparent,
|
||||||
|
borderRadius: BorderRadius.circular(12.0),
|
||||||
|
child: Visibility(
|
||||||
|
visible:
|
||||||
|
liveCard.nextLesson!.subject.id != '' ||
|
||||||
|
liveCard.nextLesson!.isEmpty,
|
||||||
|
replacement: Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 6.0),
|
||||||
|
child: PanelTitle(
|
||||||
|
title: Text(liveCard.nextLesson!.name)),
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
ListTile(
|
||||||
|
minVerticalPadding: 0.0,
|
||||||
|
dense: true,
|
||||||
|
// onLongPress: kDebugMode ? () => log(jsonEncode(lesson.json)) : null,
|
||||||
|
visualDensity: VisualDensity.compact,
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(12.0)),
|
||||||
|
title: Text(
|
||||||
|
"break".i18n,
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontSize: 16.5,
|
||||||
|
color: AppColors.of(context)
|
||||||
|
.text
|
||||||
|
.withOpacity(!liveCard
|
||||||
|
.nextLesson!.isEmpty
|
||||||
|
? 1.0
|
||||||
|
: 0.5),
|
||||||
|
fontStyle: liveCard.nextLesson!
|
||||||
|
.subject.isRenamed &&
|
||||||
|
settingsProvider
|
||||||
|
.renamedSubjectsItalics
|
||||||
|
? FontStyle.italic
|
||||||
|
: null),
|
||||||
|
),
|
||||||
|
|
||||||
|
subtitle: DefaultTextStyle(
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.bodyMedium!
|
||||||
|
.copyWith(
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
fontSize: 15.0,
|
||||||
|
height: 1.0,
|
||||||
|
color: AppColors.of(context)
|
||||||
|
.text
|
||||||
|
.withOpacity(.75),
|
||||||
|
),
|
||||||
|
maxLines: !(nextSubject == null &&
|
||||||
|
progressCurrent == null &&
|
||||||
|
progressMax == null)
|
||||||
|
? 1
|
||||||
|
: 2,
|
||||||
|
softWrap: false,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
child: liveCard.nextLesson!.room !=
|
||||||
|
liveCard.prevLesson!.room
|
||||||
|
? Text("go $diff".i18n.fill([
|
||||||
|
diff != "to room"
|
||||||
|
? (liveCard.nextLesson!
|
||||||
|
.getFloor() ??
|
||||||
|
0)
|
||||||
|
: liveCard.nextLesson!.room
|
||||||
|
]))
|
||||||
|
: Text("stay".i18n),
|
||||||
|
),
|
||||||
|
|
||||||
|
// subtitle: description != ""
|
||||||
|
// ? Text(
|
||||||
|
// description,
|
||||||
|
// style: const TextStyle(
|
||||||
|
// fontWeight: FontWeight.w500,
|
||||||
|
// fontSize: 14.0,
|
||||||
|
// ),
|
||||||
|
// maxLines: 1,
|
||||||
|
// softWrap: false,
|
||||||
|
// overflow: TextOverflow.ellipsis,
|
||||||
|
// )
|
||||||
|
// : null,
|
||||||
|
minLeadingWidth: 34.0,
|
||||||
|
leading: AspectRatio(
|
||||||
|
aspectRatio: 1,
|
||||||
|
child: Center(
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
RoundBorderIcon(
|
||||||
|
color:
|
||||||
|
AppColors.of(context).text,
|
||||||
|
width: 1.0,
|
||||||
|
icon: const SizedBox(
|
||||||
|
width: 25,
|
||||||
|
height: 25,
|
||||||
|
child: Center(
|
||||||
|
child: Icon(
|
||||||
|
Icons.local_cafe,
|
||||||
|
size: 20.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
trailing: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
const SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
// xix alignment hack :p
|
||||||
|
const Opacity(
|
||||||
|
opacity: 0,
|
||||||
|
child: Text("EE:EE")),
|
||||||
|
Text(
|
||||||
|
"${DateFormat("H:mm").format(liveCard.prevLesson!.end)}\n${DateFormat("H:mm").format(liveCard.nextLesson!.start)}",
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: AppColors.of(context)
|
||||||
|
.text
|
||||||
|
.withOpacity(.9),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (!(nextSubject == null &&
|
||||||
|
progressCurrent == null &&
|
||||||
|
progressMax == null))
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
const SizedBox(
|
||||||
|
width: 5.0,
|
||||||
|
),
|
||||||
|
if (progressCurrent != null &&
|
||||||
|
progressMax != null)
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
showDialog(
|
||||||
|
barrierColor: Colors.black,
|
||||||
|
context: context,
|
||||||
|
builder: (context) => HeadsUpCountdown(
|
||||||
|
maxTime: maxTime,
|
||||||
|
elapsedTime: elapsedTime),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
color: Colors.transparent,
|
||||||
|
child: Text(
|
||||||
|
"remaining ${progressAccuracy == ProgressAccuracy.minutes ? 'min' : 'sec'}"
|
||||||
|
.plural(
|
||||||
|
(progressMax - progressCurrent)
|
||||||
|
.round()),
|
||||||
|
maxLines: 1,
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: AppColors.of(context)
|
||||||
|
.text
|
||||||
|
.withOpacity(.75),
|
||||||
|
height: 1.1,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
if (progressCurrent != null && progressMax != null)
|
||||||
|
Padding(
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.only(top: 4.0, bottom: 12.0),
|
||||||
|
child: ProgressBar(
|
||||||
|
value: progressCurrent / progressMax),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SplittedPanel(
|
||||||
|
hasShadow: false,
|
||||||
|
isTransparent: true,
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
cardPadding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 18.0,
|
||||||
|
vertical: 11.0,
|
||||||
|
),
|
||||||
|
spacing: 0.0,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
liveCard.nextLesson == null
|
||||||
|
? Icons.home_outlined
|
||||||
|
: SubjectIcon.resolveVariant(
|
||||||
|
context: context,
|
||||||
|
subject:
|
||||||
|
liveCard.nextLesson!.subject,
|
||||||
|
),
|
||||||
|
size: 23.0,
|
||||||
|
),
|
||||||
|
const SizedBox(width: 12.0),
|
||||||
|
Text(
|
||||||
|
(liveCard.nextLesson?.subject
|
||||||
|
.isRenamed ??
|
||||||
|
false
|
||||||
|
? liveCard
|
||||||
|
.nextLesson?.subject.renamedTo
|
||||||
|
: liveCard
|
||||||
|
.nextLesson?.subject.name) ??
|
||||||
|
'go_home'.i18n,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 15.0,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
fontStyle: nextSubjectItalic
|
||||||
|
? FontStyle.italic
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
children: liveCard.nextLesson != null
|
||||||
|
? [
|
||||||
|
const SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'${DateFormat('H:mm').format(liveCard.nextLesson!.start)} - ${DateFormat('H:mm').format(liveCard.nextLesson!.end)}',
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 12.5,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
: [],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
|
: null,
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case LiveCardState.afternoon:
|
case LiveCardState.afternoon:
|
||||||
|
@ -19,7 +19,7 @@ extension Localization on String {
|
|||||||
"first_lesson_4": ".",
|
"first_lesson_4": ".",
|
||||||
// segmented countdown
|
// segmented countdown
|
||||||
"h": "hour(s)",
|
"h": "hour(s)",
|
||||||
"m": "minute(s)",
|
"m": "min(s)",
|
||||||
"s": "sec(s)",
|
"s": "sec(s)",
|
||||||
// v5
|
// v5
|
||||||
"first_lesson_soon": "Your first lesson starts soon!",
|
"first_lesson_soon": "Your first lesson starts soon!",
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
import 'package:refilc/api/providers/live_card_provider.dart';
|
|
||||||
import 'package:refilc/models/settings.dart';
|
import 'package:refilc/models/settings.dart';
|
||||||
import 'package:refilc/theme/colors/colors.dart';
|
import 'package:refilc/theme/colors/colors.dart';
|
||||||
import 'package:refilc_mobile_ui/common/progress_bar.dart';
|
import 'package:refilc_mobile_ui/common/progress_bar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:refilc_mobile_ui/pages/home/live_card/live_card.dart';
|
|
||||||
import 'live_card.i18n.dart';
|
import 'live_card.i18n.dart';
|
||||||
|
|
||||||
enum ProgressAccuracy { minutes, seconds }
|
enum ProgressAccuracy { minutes, seconds }
|
||||||
|
@ -135,13 +135,19 @@ class NotesPageState extends State<NotesPage> with TickerProviderStateMixin {
|
|||||||
title: Text('your_notes'.i18n),
|
title: Text('your_notes'.i18n),
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
isTransparent: true,
|
isTransparent: true,
|
||||||
child: Center(
|
child: selfNoteTiles.length > 1
|
||||||
child: Wrap(
|
? Center(
|
||||||
spacing: 18.0,
|
child: Wrap(
|
||||||
runSpacing: 18.0,
|
spacing: 18.0,
|
||||||
children: selfNoteTiles,
|
runSpacing: 18.0,
|
||||||
),
|
children: selfNoteTiles,
|
||||||
),
|
),
|
||||||
|
)
|
||||||
|
: Wrap(
|
||||||
|
spacing: 18.0,
|
||||||
|
runSpacing: 18.0,
|
||||||
|
children: selfNoteTiles,
|
||||||
|
),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
type: MaterialType.transparency,
|
type: MaterialType.transparency,
|
||||||
child: showBack
|
child: showBack
|
||||||
? BackButton(
|
? BackButton(
|
||||||
color: AppColors.of(context).loginPrimary)
|
color: AppColors.of(context).text)
|
||||||
: const SizedBox(height: 48.0),
|
: const SizedBox(height: 48.0),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -130,9 +130,131 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
Stack(
|
Stack(
|
||||||
alignment: Alignment.bottomCenter,
|
alignment: Alignment.bottomCenter,
|
||||||
children: [
|
children: [
|
||||||
|
// Column(
|
||||||
|
// mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
// crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
// children: [
|
||||||
|
// const SizedBox(height: 21),
|
||||||
|
// CarouselSlider(
|
||||||
|
// options: CarouselOptions(
|
||||||
|
// height: MediaQuery.of(context).size.height,
|
||||||
|
// viewportFraction: 1,
|
||||||
|
// autoPlay: true,
|
||||||
|
// autoPlayInterval: const Duration(seconds: 6),
|
||||||
|
// pauseAutoPlayOnTouch: true),
|
||||||
|
// items: [1, 2, 3, 4].map((i) {
|
||||||
|
// return Builder(
|
||||||
|
// builder: (BuildContext context) {
|
||||||
|
// return Column(
|
||||||
|
// crossAxisAlignment:
|
||||||
|
// CrossAxisAlignment.start,
|
||||||
|
// mainAxisAlignment:
|
||||||
|
// MainAxisAlignment.start,
|
||||||
|
// children: [
|
||||||
|
// Padding(
|
||||||
|
// padding:
|
||||||
|
// const EdgeInsets.only(left: 24),
|
||||||
|
// child: Column(
|
||||||
|
// crossAxisAlignment:
|
||||||
|
// CrossAxisAlignment.start,
|
||||||
|
// mainAxisAlignment:
|
||||||
|
// MainAxisAlignment.start,
|
||||||
|
// children: [
|
||||||
|
// Text(
|
||||||
|
// "welcome_title_$i".i18n,
|
||||||
|
// style: const TextStyle(
|
||||||
|
// color: Color(0xFF050B15),
|
||||||
|
// fontSize: 19,
|
||||||
|
// fontFamily: 'Montserrat',
|
||||||
|
// fontWeight:
|
||||||
|
// FontWeight.w700,
|
||||||
|
// height: 1.3),
|
||||||
|
// ),
|
||||||
|
// const SizedBox(
|
||||||
|
// height: 14.375), //meth
|
||||||
|
// Padding(
|
||||||
|
// padding:
|
||||||
|
// const EdgeInsets.only(
|
||||||
|
// right: 20),
|
||||||
|
// child: Text(
|
||||||
|
// "welcome_text_$i".i18n,
|
||||||
|
// style: const TextStyle(
|
||||||
|
// color:
|
||||||
|
// Color(0xFF050B15),
|
||||||
|
// fontFamily: 'FigTree',
|
||||||
|
// fontWeight:
|
||||||
|
// FontWeight.w500,
|
||||||
|
// fontSize: 17,
|
||||||
|
// height: 1.3),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// )),
|
||||||
|
// const SizedBox(height: 15.625),
|
||||||
|
// Padding(
|
||||||
|
// padding: const EdgeInsets.only(
|
||||||
|
// left: 16, right: 16),
|
||||||
|
// child: Image.asset(
|
||||||
|
// 'assets/images/showcase$i.png'))
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
// }).toList(),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// Container(
|
||||||
|
// height: 250,
|
||||||
|
// width: double.infinity,
|
||||||
|
// decoration: const BoxDecoration(
|
||||||
|
// gradient: LinearGradient(
|
||||||
|
// colors: [Color(0x00DAE4F7), Color(0xFFDAE4F7)],
|
||||||
|
// stops: [0, 0.1],
|
||||||
|
// begin: Alignment.topCenter,
|
||||||
|
// end: Alignment.bottomCenter,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// child: Padding(
|
||||||
|
// padding: const EdgeInsets.only(top: 3),
|
||||||
|
// child: Column(
|
||||||
|
// children: [
|
||||||
|
// SizedBox(
|
||||||
|
// height: 48,
|
||||||
|
// width: double.infinity,
|
||||||
|
// child: Padding(
|
||||||
|
// padding: const EdgeInsets.symmetric(
|
||||||
|
// horizontal: 16),
|
||||||
|
// child: FilledButton(
|
||||||
|
// style: ButtonStyle(
|
||||||
|
// shape: MaterialStateProperty.all<
|
||||||
|
// RoundedRectangleBorder>(
|
||||||
|
// const RoundedRectangleBorder(
|
||||||
|
// borderRadius: BorderRadius.all(
|
||||||
|
// Radius.circular(12)),
|
||||||
|
// ))),
|
||||||
|
// onPressed: () {},
|
||||||
|
// child: Text(
|
||||||
|
// "login".i18n,
|
||||||
|
// style: const TextStyle(
|
||||||
|
// fontFamily: 'Montserrat',
|
||||||
|
// fontSize: 20,
|
||||||
|
// fontWeight: FontWeight.w700),
|
||||||
|
// )),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// const SizedBox(height: 8),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// TODO: OLD LOGIN FROM HERE
|
||||||
Column(
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
//login buttons and ui starts here
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(height: 21),
|
const SizedBox(height: 21),
|
||||||
CarouselSlider(
|
CarouselSlider(
|
||||||
@ -190,12 +312,12 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
const SizedBox(height: 15.625), //meth
|
const SizedBox(height: 15.625),
|
||||||
// Padding(
|
Padding(
|
||||||
// padding: const EdgeInsets.only(
|
padding: const EdgeInsets.only(
|
||||||
// left: 16, right: 16),
|
left: 16, right: 16),
|
||||||
// child: Image.asset(
|
child: Image.asset(
|
||||||
// 'assets/images/showcase$i.png'))
|
'assets/images/showcase$i.png'))
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -210,7 +332,7 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
gradient: LinearGradient(
|
gradient: LinearGradient(
|
||||||
colors: [Color(0x00DAE4F7), Color(0xFFDAE4F7)],
|
colors: [Color(0x00DAE4F7), Color(0xFFDAE4F7)],
|
||||||
stops: [0, 0.05],
|
stops: [0, 0.1],
|
||||||
begin: Alignment.topCenter,
|
begin: Alignment.topCenter,
|
||||||
end: Alignment.bottomCenter,
|
end: Alignment.bottomCenter,
|
||||||
),
|
),
|
||||||
@ -238,7 +360,7 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
"login".i18n,
|
"login".i18n,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontFamily: 'Montserrat',
|
fontFamily: 'Montserrat',
|
||||||
fontSize: 19,
|
fontSize: 20,
|
||||||
fontWeight: FontWeight.w700),
|
fontWeight: FontWeight.w700),
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
|