@@ -25,6 +25,7 @@ import 'package:boxbox/helpers/constants.dart';
2525import 'package:boxbox/helpers/convert_ergast_and_formula_one.dart' ;
2626import 'package:flutter/material.dart' ;
2727import 'package:boxbox/l10n/app_localizations.dart' ;
28+ import 'package:go_router/go_router.dart' ;
2829import 'package:hive_flutter/hive_flutter.dart' ;
2930import 'package:http/http.dart' as http;
3031import 'package:html/parser.dart' as parser;
@@ -693,6 +694,31 @@ class FormulaOneScraper {
693694
694695 return results;
695696 }
697+
698+ Future <String > getMeetingIdFromTrack (
699+ String track, BuildContext context) async {
700+ late Uri url;
701+ String endpoint = Hive .box ('settings' )
702+ .get ('server' , defaultValue: defaultEndpoint) as String ;
703+ if (endpoint != defaultEndpoint) {
704+ url = Uri .parse (
705+ '$endpoint /f1/en/racing/${DateTime .now ().year }/$track /Circuit.html' ,
706+ );
707+ } else {
708+ url = Uri .parse (
709+ 'https://www.formula1.com/en/racing/${DateTime .now ().year }/$track /Circuit.html' ,
710+ );
711+ }
712+ http.Response response = await http.get (url);
713+ dom.Document document = parser.parse (utf8.decode (response.bodyBytes));
714+ int index = document.body! .innerHtml.indexOf ('practice?meeting=' ) + 17 ;
715+ String meetingId = document.body! .innerHtml.substring (index, index + 4 );
716+ context.pushReplacementNamed (
717+ 'racing' ,
718+ pathParameters: {'meetingId' : meetingId},
719+ );
720+ return meetingId;
721+ }
696722}
697723
698724class HallOfFameDriver {
0 commit comments