Travel Widget ============= Questa documentazione descrive i widget principali utilizzati per gestire la ricerca e la visualizzazione dei risultati di viaggio. I widget inclusi sono **TravelSearchForm** e **TravelSearchResult**. TravelSearchForm Widget ----------------------- Il **TravelSearchForm** è un widget `StatefulWidget` utilizzato per consentire agli utenti di cercare viaggi specificando dettagli come il numero di posti, la località di partenza e arrivo, la data e gli orari. Definizione della classe ~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: dart class TravelSearchForm extends StatefulWidget { final Function(int seats, AdamLocation departure, AdamLocation arrival, DateTime selectedDate, TimeOfDay selectedTime, TimeOfDay selectedArrivalTime) onResult; const TravelSearchForm({super.key, required this.onResult}); .... Costruttore ~~~~~~~~~~~ - **onResult** *(Function)*: Una funzione callback che riceve i seguenti parametri: - **seats** *(int)*: il numero di posti selezionati. - **departure** *(AdamLocation)*: la località di partenza. - **arrival** *(AdamLocation)*: la località di arrivo. - **selectedDate** *(DateTime)*: la data selezionata. - **selectedTime** *(TimeOfDay)*: l'orario di partenza selezionato. - **selectedArrivalTime** *(TimeOfDay)*: l'orario di arrivo selezionato. Esempi di utilizzo ~~~~~~~~~~~~~~~~~~ L'esempio sotto mostra una form di ricerca viaggio. .. image:: img/travel1.png :width: 400px :align: center .. code-block:: dart TravelSearchForm( onResult: (seats, departure, arrival, selectedDate, selectedTime, selectedArrivalTime) { // Gestisci i risultati della ricerca }, ); TravelSearchResult Widget ------------------------- Il **TravelSearchResult** è un widget `StatefulWidget` utilizzato per visualizzare i risultati della ricerca di viaggio. Utilizza un'istanza di `TravelResultViewModel <../viewmodel/travel-viewmodel.html>`__ per rappresentare i dettagli del viaggio. Definizione della classe ~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: dart class TravelSearchResult extends StatefulWidget { final Function() onTap; final TravelResultViewModel travelResult; const TravelSearchResult({super.key, required this.travelResult, required this.onTap}); Costruttore ~~~~~~~~~~~ - **onTap** *(Function)*: funzione callback eseguita quando il widget viene premuto. - **travelResult** *(TravelResultViewModel)*: un'istanza di `TravelResultViewModel <../viewmodel/travel-viewmodel.html>`__ che rappresenta i dettagli di un viaggio. Contiene informazioni come l'owner, i posti disponibili, la distanza, e gli orari di partenza e arrivo. Esempi di utilizzo ~~~~~~~~~~~~~~~~~~ L'esempio sotto mostra una card di result relativa ad un viaggio. .. image:: img/travel2.png :width: 400px :align: center .. code-block:: dart TravelSearchResult( onTap: () => print('Result tapped'), travelResult: TravelResultViewModel( owner: "Mario Rossi", avatarUri: null, availableSeats: 4, showFrequency: true, from: "Fiumicio", to: "Roma", fromTime: "07:30", toTime: "08:30", duration: "1:00", fromDistance: 2, toDistance: 3))