Il mio relatore deve richiedere all'utente ulteriori informazioni. Come lo collego?

StackOverflow https://stackoverflow.com/questions/1049339

  •  20-08-2019
  •  | 
  •  

Domanda

Sto lavorando con il modello Vista passiva. L'utente fa clic sul pulsante di un nuovo account. La vista delega la responsabilità al relatore utilizzando chiamate al metodo senza parametri.

Il problema è che ci sono più tipi di account, quindi l'utente deve scegliere quale desidera creare. Come posso risolvere questo problema?

  1. Crea un nuovo modulo dalla vista, ottieni le informazioni necessarie ed esponilo come proprietà in modo che il relatore possa recuperarlo. (Questo ignora l'idea che la vista non dovrebbe avere alcuna logica in essa)
  2. Crea e usa il nuovo modulo dal presentatore. (Questo collega il presentatore direttamente a un modulo, ignorando l'intero punto di MVP)
  3. Crea il nuovo modulo da qualche altra parte e passalo come argomento del costruttore al presentatore ... o visualizza.
  4. Dimenticalo e aggiungi un nuovo pulsante per ogni tipo di account. (Esistono diversi tipi di account e questo ingombrerà l'interfaccia utente, ma così sia.)
  5. Sto andando in questo modo nel modo sbagliato e ho bisogno di ripensare il mio design. (In questo caso, sarebbe gradita una spinta nella giusta direzione.)
È stato utile?

Soluzione 4

La mia soluzione per questo era diversa da quella che mi aspettavo. Ho cambiato il pulsante su cui l'utente ha fatto clic su DropDownMenuButton. Quindi ho passato un elenco di stringhe di tipi di account alla vista che popola il menu a discesa. Ho anche creato un gestore eventi per l'evento clic della voce di menu a discesa, che aggiorna una proprietà pubblica con il nome della voce di menu, quindi delega tutto il resto al relatore.

Il relatore deve solo ottenere il nome della voce di menu dalla proprietà esposta e quindi cercare il tipo di account in un dizionario privato di tipi di account utilizzando il nome del tipo di account come chiave.

Altri suggerimenti

Probabilmente creerei un'altra coppia vista presentatore per ottenere il tipo di account. Quindi

  • il relatore chiama direttamente l'altro relatore per visualizzare il nuovo modulo o
  • il tuo presentatore chiede al suo modello il giusto tipo di account. Il modello sa che dovrebbe chiedere altrove e invoca il & Quot; presenter tipo account & Quot; o anche il " modello del tipo di account " ;.

Penso che andrei con la prima opzione a meno che il tuo presentatore non diventi ingombrante.

Non sono un esperto di MVP ma lo gestirò utilizzando un delegato per ottenere il tipo di account dalla vista. Il relatore richiama il delegato nella vista che apre la quot &; Seleziona il tipo di account & Quot; modulo e restituisce il tipo di account selezionato quando l'utente ha selezionato un tipo di account e chiuso il modulo.

Se stai parlando di una semplice interfaccia per la selezione di un tipo di account, IMO dipende dal numero di tipi di account. Vorrei solo aggiungere nuovi pulsanti per ciascun account. Tuttavia, se hai molti tipi di account, avrei una casella combinata con l'elenco di tutti gli account possibili e il primo (quello che l'utente vede per primo) sarebbe un tipo non valido o non selezionato. Vorrei anche aggiungere un'etichetta che dice & Quot; Seleziona il tipo di account per creare & Quot ;, quindi premi un solo pulsante che invia il valore nella casella combinata al modello. In questo modo se l'utente fa semplicemente clic sul pulsante senza selezionare un tipo di account, il modello convaliderà il tipo e restituirà il problema alla vista (e la vista può evidenziare la casella o rosso il testo o altro). Ciò impedirebbe all'utente di perdere la selezione del tipo di account. Questo approccio semplificherebbe anche i test unitari.

Se stai parlando di ogni tipo di account con informazioni diverse che devono essere compilate, allora dovresti avere una visione e un presentatore diversi per ciascun account. (Questo sarebbe ciò di cui hai bisogno dopo che l'utente ha selezionato il tipo di account)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top