Skip to content

Commit

Permalink
[race hub] add #143 (add an 'add to calendar' button to the sessions)
Browse files Browse the repository at this point in the history
  • Loading branch information
BrightDV committed Apr 18, 2024
1 parent b514efb commit d5f1bda
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 2 deletions.
10 changes: 9 additions & 1 deletion lib/Screens/racehub.dart
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ class RaceHubScreen extends StatelessWidget {
session,
event.raceId,
event.meetingCountryName,
event.meetingOfficialName,
),
],
),
Expand Down Expand Up @@ -366,6 +367,7 @@ class RaceHubScreen extends StatelessWidget {
session,
event.raceId,
event.meetingCountryName,
event.meetingOfficialName,
),
),
Padding(
Expand Down Expand Up @@ -534,11 +536,13 @@ class SessionItem extends StatelessWidget {
final Session session;
final String raceId;
final String meetingCountryName;
final String meetingOfficialName;

const SessionItem(
this.session,
this.raceId,
this.meetingCountryName, {
this.meetingCountryName,
this.meetingOfficialName, {
Key? key,
}) : super(key: key);

Expand Down Expand Up @@ -734,6 +738,8 @@ class SessionItem extends StatelessWidget {
builder: (context) => SessionScreen(
sessionsAbbreviations[session.sessionsAbbreviation],
session,
meetingCountryName,
meetingOfficialName,
),
),
),
Expand Down Expand Up @@ -865,6 +871,8 @@ class SessionItem extends StatelessWidget {
builder: (context) => SessionScreen(
sessionsAbbreviations[session.sessionsAbbreviation],
session,
meetingCountryName,
meetingOfficialName,
),
),
),
Expand Down
112 changes: 111 additions & 1 deletion lib/Screens/session_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@
* Copyright (c) 2022-2024, BrightDV
*/

import 'package:add_2_calendar/add_2_calendar.dart' as calendar;
import 'package:boxbox/Screens/SessionWebView/unofficial_webview.dart';
import 'package:boxbox/Screens/SessionWebView/webview_manager.dart';
import 'package:boxbox/Screens/free_practice_screen.dart';
import 'package:boxbox/Screens/race_details.dart';
import 'package:boxbox/api/event_tracker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_timer_countdown/flutter_timer_countdown.dart';
Expand All @@ -30,8 +32,12 @@ import 'package:hive_flutter/hive_flutter.dart';
class SessionScreen extends StatefulWidget {
final String sessionFullName;
final Session session;
final String meetingCountryName;
final String meetingOfficialName;

const SessionScreen(this.sessionFullName, this.session, {Key? key})
const SessionScreen(this.sessionFullName, this.session,
this.meetingCountryName, this.meetingOfficialName,
{Key? key})
: super(key: key);
@override
State<SessionScreen> createState() => _SessionScreenState();
Expand Down Expand Up @@ -117,6 +123,57 @@ class _SessionScreenState extends State<SessionScreen> {
setState(() {});
},
),
!kIsWeb
? Padding(
padding: const EdgeInsets.only(top: 5, bottom: 5),
child: TextButton.icon(
label: Padding(
padding:
const EdgeInsets.symmetric(vertical: 7),
child: Text(
AppLocalizations.of(context)!.addToCalendar,
),
),
icon: Icon(
Icons.add_alert_outlined,
),
style: TextButton.styleFrom(
side: BorderSide(
color: Theme.of(context).colorScheme.primary,
width: 1,
),
),
onPressed: () {
calendar.Event event = calendar.Event(
title:
'${widget.sessionFullName} - ${widget.meetingOfficialName}',
location: widget.meetingCountryName,
startDate: DateTime(
widget.session.startTime.toLocal().year,
widget.session.startTime.toLocal().month,
widget.session.startTime.toLocal().day,
widget.session.startTime.toLocal().hour,
widget.session.startTime.toLocal().minute,
widget.session.startTime.toLocal().second,
),
endDate: DateTime(
widget.session.startTime.toLocal().year,
widget.session.startTime.toLocal().month,
widget.session.startTime.toLocal().day,
widget.session.startTime.toLocal().hour +
(widget.session.sessionsAbbreviation ==
'r'
? 3
: 1),
widget.session.startTime.toLocal().minute,
widget.session.startTime.toLocal().second,
),
);
calendar.Add2Calendar.addEvent2Cal(event);
},
),
)
: Container(),
],
),
)
Expand Down Expand Up @@ -195,6 +252,59 @@ class _SessionScreenState extends State<SessionScreen> {
setState(() {});
},
),
!kIsWeb
? Padding(
padding: const EdgeInsets.only(top: 5, bottom: 5),
child: TextButton.icon(
label: Padding(
padding:
const EdgeInsets.symmetric(vertical: 7),
child: Text(
AppLocalizations.of(context)!.addToCalendar,
),
),
icon: Icon(
Icons.add_alert_outlined,
),
style: TextButton.styleFrom(
side: BorderSide(
color:
Theme.of(context).colorScheme.primary,
width: 1,
),
),
onPressed: () {
calendar.Event event = calendar.Event(
title:
'${widget.sessionFullName} - ${widget.meetingOfficialName}',
location: widget.meetingCountryName,
startDate: DateTime(
widget.session.startTime.toLocal().year,
widget.session.startTime.toLocal().month,
widget.session.startTime.toLocal().day,
widget.session.startTime.toLocal().hour,
widget.session.startTime.toLocal().minute,
widget.session.startTime.toLocal().second,
),
endDate: DateTime(
widget.session.startTime.toLocal().year,
widget.session.startTime.toLocal().month,
widget.session.startTime.toLocal().day,
widget.session.startTime.toLocal().hour +
(widget.session
.sessionsAbbreviation ==
'r'
? 3
: 1),
widget.session.startTime.toLocal().minute,
widget.session.startTime.toLocal().second,
),
);
calendar.Add2Calendar.addEvent2Cal(event);
},
),
)
: Container(),
],
)
: widget.session.state == 'completed' ||
Expand Down

0 comments on commit d5f1bda

Please sign in to comment.