Skip to content

Commit 1c5732e

Browse files
Merge pull request #192 from shravyackm/gf_dropdown
Gf dropdown
2 parents 3fae141 + 18bdbe2 commit 1c5732e

File tree

7 files changed

+657
-20
lines changed

7 files changed

+657
-20
lines changed

example/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,4 +261,4 @@ packages:
261261
version: "4.2.0"
262262
sdks:
263263
dart: ">=2.9.0-14.0.dev <3.0.0"
264-
flutter: ">=1.18.0-6.0.pre <2.0.0"
264+
flutter: ">=1.18.0-6.0.pre <2.0.0"

lib/components/card/gf_card.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
3+
34
import 'package:getwidget/getwidget.dart';
45

56
/// A material design card. A card has slightly rounded corners and a shadow.
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
import 'package:flutter/material.dart';
2+
3+
class GFDropdown<T> extends StatefulWidget {
4+
GFDropdown(
5+
{Key key,
6+
@required this.items,
7+
this.icon,
8+
this.selectedItemBuilder,
9+
this.value,
10+
this.hint,
11+
this.disabledHint,
12+
@required this.onChanged,
13+
this.onTap,
14+
this.elevation = 8,
15+
this.style,
16+
this.underline,
17+
this.iconDisabledColor,
18+
this.iconEnabledColor,
19+
this.iconSize = 24.0,
20+
this.isDense = false,
21+
this.isExpanded = false,
22+
this.itemHeight = kMinInteractiveDimension,
23+
this.focusColor,
24+
this.focusNode,
25+
this.autofocus = false,
26+
this.dropdownColor,
27+
this.padding = const EdgeInsets.all(5),
28+
this.borderRadius = const BorderRadius.all(Radius.circular(4)),
29+
this.borderColor});
30+
31+
DropdownButtonBuilder selectedItemBuilder;
32+
final List<DropdownMenuItem<T>> items;
33+
34+
/// The widget to use for the drop-down button's icon.
35+
///
36+
/// Defaults to an [Icon] with the [Icons.arrow_drop_down] glyph.
37+
final Widget icon;
38+
39+
/// The z-coordinate at which to place the menu when open.
40+
final int elevation;
41+
42+
/// The value of the currently selected [DropdownMenuItem].
43+
final T value;
44+
45+
/// the color of the border of the dropdown button
46+
final Color borderColor;
47+
48+
///The padding given inside the dropdown
49+
final EdgeInsets padding;
50+
51+
/// A placeholder widget that is displayed by the dropdown button.
52+
final Widget hint;
53+
54+
/// A message to show when the dropdown is disabled.
55+
final Widget disabledHint;
56+
57+
/// Called when the user selects an item.
58+
///
59+
/// If the [onChanged] callback is null or the list of [DropdownButton.items]
60+
/// is null then the dropdown button will be disabled,
61+
final ValueChanged<T> onChanged;
62+
63+
/// Called when the dropdown button is tapped.
64+
final VoidCallback onTap;
65+
66+
/// Defaults to the [TextTheme.subtitle1] value of the current
67+
/// [ThemeData.textTheme] of the current [Theme].
68+
final TextStyle style;
69+
70+
/// The widget to use for drawing the drop-down button's underline.
71+
final Widget underline;
72+
73+
/// The color of any [Icon] descendant of [icon] if this button is disabled,
74+
/// i.e. if [onChanged] is null.
75+
final Color iconDisabledColor;
76+
77+
/// The color of any [Icon] descendant of [icon] if this button is enabled,
78+
/// i.e. if [onChanged] is defined.
79+
final Color iconEnabledColor;
80+
81+
/// The size to use for the drop-down button's down arrow icon button.
82+
final double iconSize;
83+
84+
/// Reduce the button's height.
85+
final bool isDense;
86+
87+
/// Set the dropdown's inner contents to horizontally fill its parent.
88+
final bool isExpanded;
89+
90+
/// The default value is [kMinInteractiveDimension], which is also the minimum
91+
/// height for menu items.
92+
///
93+
/// If this value is null and there isn't enough vertical room for the menu,
94+
final double itemHeight;
95+
96+
/// The color for the button's [Material] when it has the input focus.
97+
final Color focusColor;
98+
99+
/// {@macro flutter.widgets.Focus.focusNode}
100+
final FocusNode focusNode;
101+
102+
/// {@macro flutter.widgets.Focus.autofocus}
103+
final bool autofocus;
104+
105+
/// The background color of the dropdown.
106+
final Color dropdownColor;
107+
108+
/// The border radius of the dropdown.
109+
final BorderRadius borderRadius;
110+
111+
@override
112+
_GFDropdownState createState() => _GFDropdownState();
113+
}
114+
115+
class _GFDropdownState extends State<GFDropdown> {
116+
@override
117+
Widget build(BuildContext context) {
118+
return Card(
119+
child: Container(
120+
padding: widget.padding,
121+
decoration: BoxDecoration(
122+
borderRadius: widget.borderRadius,
123+
border: Border.all(
124+
color: widget.borderColor != null
125+
? widget.borderColor
126+
: Colors.white)),
127+
child: DropdownButton(
128+
129+
items: widget.items,
130+
selectedItemBuilder: widget.selectedItemBuilder,
131+
value: widget.value,
132+
hint: widget.hint,
133+
disabledHint: widget.disabledHint,
134+
onChanged: widget.onChanged == null ? null : widget.onChanged,
135+
onTap: widget.onTap,
136+
elevation: widget.elevation,
137+
style: widget.style,
138+
icon: widget.icon,
139+
iconDisabledColor: widget.iconDisabledColor,
140+
iconEnabledColor: widget.iconEnabledColor,
141+
iconSize: widget.iconSize,
142+
isDense: widget.isDense,
143+
isExpanded: widget.isExpanded,
144+
itemHeight: widget.itemHeight,
145+
focusColor: widget.focusColor,
146+
focusNode: widget.focusNode,
147+
autofocus: widget.autofocus,
148+
dropdownColor: widget.dropdownColor,
149+
)));
150+
}
151+
}

0 commit comments

Comments
 (0)