import 'package:flutter/material.dart'; import 'package:auto_size_text/auto_size_text.dart'; import 'package:anyway/structs/trip.dart'; import 'package:anyway/pages/current_trip.dart'; class CurrentTripLoadingIndicator extends StatefulWidget { final Trip trip; const CurrentTripLoadingIndicator({ super.key, required this.trip, }); @override State createState() => _CurrentTripLoadingIndicatorState(); } class _CurrentTripLoadingIndicatorState extends State { @override Widget build(BuildContext context) => Center( child: FutureBuilder( future: widget.trip.cityName, builder: (BuildContext context, AsyncSnapshot snapshot) { Widget greeter; Widget loadingIndicator = const Padding( padding: EdgeInsets.only(top: 10), child: CircularProgressIndicator() ); if (snapshot.hasData) { greeter = AutoSizeText( maxLines: 1, 'Generating your trip to ${snapshot.data}...', style: greeterStyle, ); } else if (snapshot.hasError) { // the exact error is shown in the central part of the trip overview. No need to show it here greeter = AutoSizeText( maxLines: 1, 'Error while loading trip.', style: greeterStyle, ); } else { greeter = AutoSizeText( maxLines: 1, 'Generating your trip...', style: greeterStyle, ); } return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ greeter, loadingIndicator, ], ); } ) ); }