Skip to content

Commit

Permalink
fix(home-view): remove duplicated error segments (academic calendar r…
Browse files Browse the repository at this point in the history
…epo)
  • Loading branch information
simon-the-shark committed Sep 1, 2024
1 parent a497739 commit e9ee49a
Show file tree
Hide file tree
Showing 5 changed files with 106 additions and 84 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import "package:flutter/material.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";

import "../../../config/ui_config.dart";
import "../../../widgets/my_error_widget.dart";
import "../../home_view/widgets/loading_widgets/horizontal_rectangular_section_loading.dart";
import "../repository/academic_calendar_repo.dart";
import "countdown_widget/exam_session_countdown.dart";
import "home_screen_greeting.dart";

class AcademicCalendarConsumer extends ConsumerWidget {
const AcademicCalendarConsumer({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(academicCalendarRepoProvider);

return switch (state) {
AsyncError(:final error) => Padding(
padding: const EdgeInsets.only(top: HomeViewConfig.paddingSmall),
child: MyErrorWidget(error),
),
AsyncValue(:final AcademicCalendar value) => Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Greeting(value),
const SizedBox(height: HomeViewConfig.paddingMedium),
ExamSessionCountdown(value),
],
),
_ => const Padding(
padding:
EdgeInsets.symmetric(horizontal: HomeViewConfig.paddingMedium),
child: Column(
children: [
HorizontalRectangularSectionLoading(),
SizedBox(height: HomeViewConfig.paddingMedium),
HorizontalRectangularSectionLoading(),
],
),
),
};
}
}
Original file line number Diff line number Diff line change
@@ -1,65 +1,54 @@
import "package:flutter/material.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";

import "../../../../theme/app_theme.dart";
import "../../../../utils/context_extensions.dart";
import "../../../../widgets/my_error_widget.dart";
import "../../../home_view/widgets/loading_widgets/horizontal_rectangular_section_loading.dart";
import "../../repository/academic_calendar_repo.dart";
import "digits_widgets.dart";

class ExamSessionCountdown extends ConsumerWidget {
const ExamSessionCountdown({super.key});

class ExamSessionCountdown extends StatelessWidget {
const ExamSessionCountdown(this.academicCalendar, {super.key});
final AcademicCalendar academicCalendar;
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(academicCalendarRepoProvider);
return switch (state) {
AsyncLoading() => const Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: HorizontalRectangularSectionLoading(),
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: Container(
width: double.infinity,
height: 69,
decoration: BoxDecoration(
gradient: context.colorTheme.toPwrGradient,
borderRadius: BorderRadius.circular(8),
boxShadow: const [
BoxShadow(
spreadRadius: 6,
blurRadius: 11,
color: Color(0x28fa6465),
),
],
),
AsyncError(:final error) => MyErrorWidget(error),
AsyncValue(:final value) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: Container(
width: double.infinity,
height: 69,
decoration: BoxDecoration(
gradient: context.colorTheme.toPwrGradient,
borderRadius: BorderRadius.circular(8),
boxShadow: const [
BoxShadow(
spreadRadius: 6,
blurRadius: 11,
color: Color(0x28fa6465),
),
],
child: Row(
children: [
Padding(
padding: const EdgeInsets.all(16),
child: DigitsRow(academicCalendar),
),
child: Row(
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(16),
child: DigitsRow(value),
Text(
context.localize.days,
style: context.textTheme.headlineWhite,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
context.localize.days,
style: context.textTheme.headlineWhite,
),
Text(
context.localize.to_start_session,
style: context.textTheme.bodyWhite,
),
],
Text(
context.localize.to_start_session,
style: context.textTheme.bodyWhite,
),
],
),
),
)
};
],
),
),
);
}
}
53 changes: 21 additions & 32 deletions lib/features/academic_calendar/widgets/home_screen_greeting.dart
Original file line number Diff line number Diff line change
@@ -1,46 +1,35 @@
import "package:flutter/material.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";

import "../../../theme/app_theme.dart";
import "../../../utils/context_extensions.dart";
import "../../../widgets/my_error_widget.dart";
import "../../home_view/widgets/loading_widgets/horizontal_rectangular_section_loading.dart";
import "../model/academic_calendar_extensions.dart";
import "../repository/academic_calendar_repo.dart";
import "../utils/localize_academic_day.dart";

class Greeting extends ConsumerWidget {
const Greeting({
class Greeting extends StatelessWidget {
const Greeting(
this.academicCalendar, {
super.key,
});

final AcademicCalendar academicCalendar;
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(academicCalendarRepoProvider);

return switch (state) {
AsyncLoading() => const Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: HorizontalRectangularSectionLoading(),
),
AsyncError(:final error) => MyErrorWidget(error),
AsyncValue(:final value) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
context.localize.home_screen_greeting,
style: context.greetingTheme.textStyle,
),
Text(
value?.academicDay?.localize(context) ?? "",
style: context.greetingTheme.boldTextStyle,
),
],
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 24),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
context.localize.home_screen_greeting,
style: context.greetingTheme.textStyle,
),
Text(
academicCalendar.academicDay?.localize(context) ?? "",
style: context.greetingTheme.boldTextStyle,
),
)
};
],
),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:riverpod_annotation/riverpod_annotation.dart";

import "../../../../config/ttl_config.dart";
import "../../../api_base/query_adapter.dart";
import "../model/building_model.dart";
import "getBuildings.graphql.dart";

Expand Down
6 changes: 2 additions & 4 deletions lib/features/home_view/home_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import "package:flutter/material.dart";

import "../../config/ui_config.dart";
import "../../theme/app_theme.dart";
import "../academic_calendar/widgets/countdown_widget/exam_session_countdown.dart";
import "../academic_calendar/widgets/home_screen_greeting.dart";
import "../academic_calendar/widgets/academic_calendar_consumer.dart";
import "keep_alive_home_view_providers.dart";
import "widgets/buildings_section/buildings_section.dart";
import "widgets/departments_section/departments_section.dart";
Expand All @@ -20,8 +19,7 @@ class HomeView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final List<Widget> sections = [
const Greeting(),
const ExamSessionCountdown(),
const AcademicCalendarConsumer(),
const ParkingsSection(),
const ScienceClubsSection(),
const BuildingsSection(),
Expand Down

0 comments on commit e9ee49a

Please sign in to comment.