fixed navigation and ui bugs in summary

This commit is contained in:
kima 2023-06-25 14:36:18 +02:00
parent 50bc03f403
commit 51e2c63134
6 changed files with 315 additions and 297 deletions

View File

@ -13,7 +13,6 @@ import 'package:flutter_feather_icons/flutter_feather_icons.dart';
import 'package:i18n_extension/i18n_widget.dart';
import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:wtf_sliding_sheet/wtf_sliding_sheet.dart';
import 'live_card.i18n.dart';
class LiveCard extends StatefulWidget {
@ -68,30 +67,31 @@ class _LiveCardState extends State<LiveCard> {
),
),
onTap: () {
showSlidingBottomSheet(
context,
useRootNavigator: true,
builder: (context) => SlidingSheetDialog(
color: Colors.black.withOpacity(0.99),
duration: const Duration(milliseconds: 400),
scrollSpec: const ScrollSpec.bouncingScroll(),
snapSpec: const SnapSpec(
snap: true,
snappings: [1.0],
initialSnap: 1.0,
positioning: SnapPositioning.relativeToAvailableSpace,
),
minHeight: MediaQuery.of(context).size.height,
cornerRadius: 16,
cornerRadiusOnFullscreen: 0,
builder: (context, state) => const Material(
color: Colors.black,
child: SummaryScreen(
currentPage: 'start',
),
),
),
);
// showSlidingBottomSheet(
// context,
// useRootNavigator: true,
// builder: (context) => SlidingSheetDialog(
// color: Colors.black.withOpacity(0.99),
// duration: const Duration(milliseconds: 400),
// scrollSpec: const ScrollSpec.bouncingScroll(),
// snapSpec: const SnapSpec(
// snap: true,
// snappings: [1.0],
// initialSnap: 1.0,
// positioning: SnapPositioning.relativeToAvailableSpace,
// ),
// minHeight: MediaQuery.of(context).size.height,
// cornerRadius: 16,
// cornerRadiusOnFullscreen: 0,
// builder: (context, state) => const Material(
// color: Colors.black,
// child: SummaryScreen(
// currentPage: 'start',
// ),
// ),
// ),
// );
SummaryScreen.show(context: context, currentPage: 'start');
},
);
break;

View File

@ -198,8 +198,8 @@ class _GradesBodyState extends State<GradesBody> {
getGrades();
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
return Expanded(
child: ListView(
children: [
SizedBox(
height: ((100 * subjectTiles5.length) /
@ -308,7 +308,7 @@ class _GradesBodyState extends State<GradesBody> {
},
),
),
const SizedBox(height: 40.0),
const SizedBox(height: 30.0),
Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
@ -325,8 +325,8 @@ class _GradesBodyState extends State<GradesBody> {
),
Container(
margin: const EdgeInsets.only(top: 10.0),
padding:
const EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0),
padding: const EdgeInsets.symmetric(
horizontal: 16.0, vertical: 4.0),
decoration: BoxDecoration(
color: gradeColor(context: context, value: endYearAvg)
.withOpacity(.2),
@ -355,6 +355,7 @@ class _GradesBodyState extends State<GradesBody> {
),
),
],
),
);
}
}

View File

@ -230,9 +230,8 @@ class _LessonsBodyState extends State<LessonsBody> {
getAndSortDelays();
generateTiles();
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
return Expanded(
child: ListView(
children: [
lessons[0],
const SizedBox(height: 18.0),
@ -258,6 +257,7 @@ class _LessonsBodyState extends State<LessonsBody> {
const SizedBox(height: 18.0),
lessons[2],
],
),
);
}
}

View File

@ -58,11 +58,10 @@ class _PersonalityBodyState extends State<PersonalityBody> {
Widget build(BuildContext context) {
user = Provider.of<UserProvider>(context);
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceAround,
return Expanded(
child: ListView(
children: [
const SizedBox(height: 60),
const SizedBox(height: 30),
AnimatedCrossFade(
duration: const Duration(milliseconds: 1000),
sizeCurve: Curves.easeInToLinear,
@ -80,7 +79,7 @@ class _PersonalityBodyState extends State<PersonalityBody> {
? CrossFadeState.showFirst
: CrossFadeState.showSecond,
),
const SizedBox(height: 40),
const SizedBox(height: 30),
if (isRevealed)
Center(
child: Row(
@ -122,6 +121,8 @@ class _PersonalityBodyState extends State<PersonalityBody> {
),
),
const SizedBox(height: 60),
]);
],
),
);
}
}

View File

@ -3,7 +3,6 @@ import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
import 'package:filcnaplo_mobile_ui/screens/summary/summary_screen.dart';
import 'package:filcnaplo_mobile_ui/screens/summary/summary_screen.i18n.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
import 'package:provider/provider.dart';
@ -61,6 +60,7 @@ class _StartBodyState extends State<StartBody> {
color: Colors.black,
child: SummaryScreen(
currentPage: 'grades',
isBottomSheet: true,
),
),
),

View File

@ -1,6 +1,7 @@
import 'package:confetti/confetti.dart';
import 'package:filcnaplo/api/providers/user_provider.dart';
import 'package:filcnaplo/models/settings.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
import 'package:provider/provider.dart';
@ -15,12 +16,22 @@ import 'pages/personality_page.dart';
class SummaryScreen extends StatefulWidget {
final String currentPage;
final bool isBottomSheet;
const SummaryScreen({Key? key, this.currentPage = 'personality'})
: super(key: key);
const SummaryScreen({
Key? key,
this.currentPage = 'personality',
this.isBottomSheet = false,
}) : super(key: key);
@override
_SummaryScreenState createState() => _SummaryScreenState();
static show(
{required BuildContext context,
String currentPage = 'personality'}) =>
Navigator.of(context, rootNavigator: true).push(CupertinoPageRoute(
builder: (context) => SummaryScreen(currentPage: currentPage)));
}
class _SummaryScreenState extends State<SummaryScreen>
@ -28,7 +39,6 @@ class _SummaryScreenState extends State<SummaryScreen>
late UserProvider user;
late SettingsProvider settings;
late AnimationController _hideContainersController;
ConfettiController? _confettiController;
late String firstName;
@ -46,9 +56,6 @@ class _SummaryScreenState extends State<SummaryScreen>
@override
void initState() {
super.initState();
_hideContainersController = AnimationController(
vsync: this, duration: const Duration(milliseconds: 200));
}
@override
@ -70,11 +77,15 @@ class _SummaryScreenState extends State<SummaryScreen>
firstName = "János";
}
return AnimatedBuilder(
animation: _hideContainersController,
builder: (context, child) => Opacity(
opacity: 1 - _hideContainersController.value,
child: Container(
return widget.isBottomSheet
? buildContainer()
: Scaffold(
body: buildContainer(),
);
}
Widget buildContainer() {
return Container(
decoration: BoxDecoration(gradient: _backgroundGradient),
child: Container(
decoration: BoxDecoration(gradient: _backgroundGradient),
@ -82,11 +93,11 @@ class _SummaryScreenState extends State<SummaryScreen>
height: MediaQuery.of(context).size.height,
child: SafeArea(
child: Padding(
padding: EdgeInsets.only(
padding: const EdgeInsets.only(
left: 24.0,
right: 24.0,
top: MediaQuery.of(context).padding.top,
bottom: 52.0,
top: 15.0,
bottom: 40.0,
),
child: Column(
crossAxisAlignment: widget.currentPage == 'start'
@ -100,14 +111,16 @@ class _SummaryScreenState extends State<SummaryScreen>
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'greeting'.i18n.fill([firstName]),
textAlign: TextAlign.left,
maxLines: 2,
overflow: TextOverflow.fade,
overflow: TextOverflow.ellipsis,
softWrap: true,
style: const TextStyle(
fontWeight: FontWeight.w900,
fontSize: 26.0,
@ -124,7 +137,9 @@ class _SummaryScreenState extends State<SummaryScreen>
: widget.currentPage == 'personality'
? 'title_personality'.i18n
: '',
maxLines: 1,
overflow: TextOverflow.fade,
softWrap: false,
style: const TextStyle(
fontWeight: FontWeight.bold,
fontSize: 22.0,
@ -133,6 +148,7 @@ class _SummaryScreenState extends State<SummaryScreen>
),
],
),
),
widget.currentPage != 'start'
? IconButton(
onPressed: () async {
@ -172,8 +188,6 @@ class _SummaryScreenState extends State<SummaryScreen>
),
),
),
),
),
);
}
@ -198,9 +212,11 @@ class _SummaryScreenState extends State<SummaryScreen>
color: Colors.black,
child: SummaryScreen(
currentPage: page,
isBottomSheet: true,
),
),
),
);
//SummaryScreen.show(context: context, currentPage: page);
}
}