// A search bar that allow the user to enter a city name import 'package:anyway/structs/landmark.dart'; import 'package:geocoding/geocoding.dart'; import 'dart:developer'; import 'package:anyway/structs/trip.dart'; import 'package:flutter/material.dart'; class NewTripLocationSearch extends StatefulWidget { Trip trip; NewTripLocationSearch( this.trip, ); @override State createState() => _NewTripLocationSearchState(); } class _NewTripLocationSearchState extends State { final TextEditingController _controller = TextEditingController(); setTripLocation (String query) async { List locations = []; log('Searching for: $query'); try{ locations = await locationFromAddress(query); } catch (e) { log('No results found for: $query : $e'); } if (locations.isNotEmpty) { Location location = locations.first; widget.trip.landmarks.clear(); widget.trip.addLandmark( Landmark( uuid: 'pending', name: query, location: [location.latitude, location.longitude], type: start ) ); } } @override Widget build(BuildContext context) { return SearchBar( hintText: 'Enter a city name or long press on the map.', onSubmitted: setTripLocation, controller: _controller, leading: Icon(Icons.search), trailing: [ElevatedButton( onPressed: () { setTripLocation(_controller.text); }, child: Text('Search'), ),] ); } }