Comments (2)
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.
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:
- The model class get / set methods: https://github.com/brianegan/flutter_architecture_samples/blob/master/example/scoped_model/lib/widgets/filter_button.dart#L25
- 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)
- Some widget don't refresh after calling notifyListener in flutter 1.22.1
- bloc model value fetch in init function not working
- can't run
- can't run
- Error: Could not find the correct ScopedModel.
- Testing when using scopedModelDescendant HOT 2
- 单独抽离一个方法 如何修改值?
- 不继承 ScopedModelDescendant() 如何修改值?
- void initState() 方法里如何修改值?
- Not Working error
- Target of URI doesn't exist: 'package:scoped_model/scoped_model.dart'.
- Publish null safe stable version
- Error: Could not find the correct ScopedModel. To fix, please: * Provide types to ScopedModel<MyModel> * Provide types to ScopedModelDescendant<MyModel> * Provide types to ScopedModel.of<MyModel>() * Always use package imports. Ex: `import 'package:my_app/my_model.dart'; If none of these solutions work, please file a bug at:
- Error: Could not find the correct ScopedModel. To fix, please: * Provide types to ScopedModel<MyModel> * Provide types to ScopedModelDescendant<MyModel> * Provide types to ScopedModel.of<MyModel>() * Always use package imports. Ex: `import 'package:my_app/my_model.dart'; If none of these solutions work, please file a bug at:
- How to connect multiple models in connector (ScopedModel) HOT 1
- scoped_model issues HOT 6
- Scoped Model - not working after go back to previous page
- Model notifyListeners closes EndDrawer
- ScopedModel
- scoped_model.of() issue HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scoped_model.