Giter VIP home page Giter VIP logo

Comments (2)

willismonroe avatar willismonroe commented on June 6, 2024 1

Hi @brianegan

Thanks so much, that's super useful and explained very clearly. I can see the usage in your code, and the reasoning behind storing the active selection in the model. I'm realizing now that having this stored makes a lot more sense, for instance in my app, the data entry widgets are on the home screen (including this DropdownButton), but you can pull a drawer over it and delete items from the dropdown list. In that case I'd want to what the user had selected, so I can change the selected value if that's the one to be deleted.

Appreciate you taking the time to answer my question!
All the best.

from scoped_model.

brianegan avatar brianegan commented on June 6, 2024

Hi @willismonroe!

I usually put that type of logic in the Model itself, with a getter/setter pair. In the Widget, I just call model.currentValue = selectedValue within the onChanged callback of a DropDownButton.

The reason I put it in the model? Generally, you'll want the selected value to affect other things in the Model as well! For example, in a Todo app, if you use a DropdownButton to filter the results, you'll want to use that Filter to limit the number of items displayed, and those items are generally contained in the Model as well. Therefore, in that case, it makes more sense to put this value in the Model rather than in a State class, so you can synchronize all that logic.

I've got an example of a PopupMenuButton that does exactly this type of thing in my Architecture Samples Repo with a PopupMenuButton, but the concepts should be basically the same:

  1. The model class get / set methods: https://github.com/brianegan/flutter_architecture_samples/blob/master/example/scoped_model/lib/widgets/filter_button.dart#L25
  2. Usage in the Widget: https://github.com/brianegan/flutter_architecture_samples/blob/master/example/scoped_model/lib/widgets/filter_button.dart#L20

Hope that helps! Let me know if it does, or if ya have follow up questions :)

from scoped_model.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.