Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dropdown with widgets #117

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

enchance
Copy link

Allow the use of widgets for DropDownSettingsTile() for the value property. Useful for scenarios such as displaying a theme selector where you'd like to show the theme color and the theme name using a Row() widget.

Still supports the use of String only values where it defaults to the use of Text()

@@ -1341,7 +1341,9 @@ class _DropDownSettingsTileState<T> extends State<DropDownSettingsTile<T>> {
onChanged: (newValue) => _handleDropDownChange(newValue, onChanged),
enabled: widget.enabled,
itemBuilder: (T value) {
return Text(widget.values[value]!);
var val = widget.values[value]!;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@enchance Instead of managing the widget building like this, in this case, we should take an optional itemBuilder function as property, which will do the same except having to manage the rendering of the widget inside the custom widget we delegate the task to developer.

/// A map containing unique values along with the display name
final Map<T, String> values;
/// A map containing unique values which could use a String of a Widget as the display value
final Map<T, dynamic> values;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@enchance As mentioned in the following comment, we should revert this back to Map<T, String> values, and then use the string values to decide what to render inside the optional itemBuilder function.

Since, the itemBuilder is optional, we can without an issue render the displayNames as Text

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants