import 'package:anyway/layout.dart'; import 'package:anyway/structs/preferences.dart'; import 'package:anyway/structs/trip.dart'; import 'package:anyway/utils/fetch_trip.dart'; import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; class NewTripButton extends StatefulWidget { final Trip trip; const NewTripButton({required this.trip}); @override State createState() => _NewTripButtonState(); } class _NewTripButtonState extends State { @override Widget build(BuildContext context) { return ListenableBuilder( listenable: widget.trip, builder: (BuildContext context, Widget? child) { if (widget.trip.landmarks.isEmpty){ return Container(); } return FloatingActionButton.extended( onPressed: () async { Future preferences = loadUserPreferences(); Trip trip = widget.trip; fetchTrip(trip, preferences); Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "map", trip: trip) ) ); }, icon: Icon(Icons.add), label: FutureBuilder( future: widget.trip.cityName, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return AutoSizeText( 'New trip to ${snapshot.data.toString()}', style: TextStyle(fontSize: 18), maxLines: 2, ); } else { return AutoSizeText( 'New trip to ...', style: TextStyle(fontSize: 18), maxLines: 2, ); } }, ) ); } ); } }