Skip to content

Commit 7e70518

Browse files
committed
custom toggle done
1 parent 3b12cc2 commit 7e70518

3 files changed

Lines changed: 22 additions & 21 deletions

File tree

example/lib/main.dart

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -127,26 +127,23 @@ class HomeState extends State<Home> with SingleTickerProviderStateMixin {
127127
),
128128
),
129129

130-
GFToggle(onChanged: null, value: null, type: GFToggleType.ios,
131-
boxShape: BoxShape.rectangle,
132-
133-
// enabledThumbColor: Colors.red,
134-
130+
GFToggle(onChanged: (val){
131+
print(val);
132+
}, value: null, type: GFToggleType.square
135133
),
136134

137135
GFToggle(onChanged: null, value: null, type: GFToggleType.android,
138-
boxShape: BoxShape.rectangle,
139-
// enabledThumbColor: Colors.red,
140-
141136
),
142-
GFToggle(onChanged: null, value: null, type: GFToggleType.labeled,
143-
boxShape: BoxShape.rectangle,
144-
// enabledThumbColor: Colors.red,
137+
GFToggle(onChanged: null, value: null, type: GFToggleType.android,
138+
),
139+
GFToggle(onChanged: null, value: null, type: GFToggleType.custom,
140+
),
141+
GFToggle(onChanged: null, value: null, type: GFToggleType.custom,
142+
),
143+
GFToggle(onChanged: null, value: null, type: GFToggleType.ios,
145144

146145
),
147-
GFToggle(onChanged: null, value: null, type: GFToggleType.labeled,
148-
boxShape: BoxShape.rectangle,
149-
// enabledThumbColor: Colors.red,
146+
GFToggle(onChanged: null, value: null, type: GFToggleType.ios,
150147

151148
),
152149

lib/components/toggle/gf_toggle.dart

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ class GFToggle extends StatefulWidget {
1919
this.disabledTrackColor,
2020
this.disabledThumbColor,
2121
this.type,
22-
this.boxShape
22+
this.boxShape,
23+
this.borderRadius
24+
2325

2426

2527
}) :super(key: key);
@@ -35,6 +37,7 @@ class GFToggle extends StatefulWidget {
3537
final Color disabledThumbColor;
3638
final Color disabledTrackColor;
3739
final BoxShape boxShape;
40+
final BorderRadius borderRadius;
3841

3942

4043

@@ -101,7 +104,6 @@ class _GFToggleState extends State<GFToggle> with TickerProviderStateMixin{
101104
setState(() {
102105
isOn = !isOn;
103106
});
104-
print(controller.status);
105107
switch (controller.status) {
106108
case AnimationStatus.dismissed:
107109
controller.forward();
@@ -111,6 +113,7 @@ class _GFToggleState extends State<GFToggle> with TickerProviderStateMixin{
111113
break;
112114
default:
113115
}
116+
widget.onChanged(isOn);
114117

115118
},
116119
child: Stack(
@@ -128,15 +131,15 @@ class _GFToggleState extends State<GFToggle> with TickerProviderStateMixin{
128131
height: widget.type == GFToggleType.ios ? 25 : 15,
129132
decoration: BoxDecoration(
130133
color: isOn ? widget.enabledTrackColor??Colors.lightGreen: widget.disabledTrackColor ?? Colors.grey,
131-
borderRadius: BorderRadius.all(Radius.circular(20))
134+
borderRadius: widget.type == GFToggleType.square?BorderRadius.all(Radius.circular(0)): widget.borderRadius ?? BorderRadius.all(Radius.circular(20))
132135

133136
),
134137
child:
135138
Padding(padding: EdgeInsets.only(left: 3, right: 3, top: 3.4), child:
136139
isOn?
137140

138-
widget.type== GFToggleType.android || widget.type == GFToggleType.ios? Container(): Text( widget.enabledText ?? 'ON',style: widget.enabledTextColor?? TextStyle(color: Colors.white, fontSize: 8),):
139-
widget.type== GFToggleType.android || widget.type == GFToggleType.ios? Container(): Text(widget.disabledText ?? 'OFF', textAlign: TextAlign.end, style: widget.disabledTextColor?? TextStyle(color: Colors.white, fontSize: 8),))
141+
Text( widget.enabledText ?? widget.type== GFToggleType.custom?'ON':'',style: widget.enabledTextColor?? TextStyle(color: Colors.white, fontSize: 8),):
142+
Text(widget.disabledText ?? widget.type== GFToggleType.custom?'OFF':'', textAlign: TextAlign.end, style: widget.disabledTextColor?? TextStyle(color: Colors.white, fontSize: 8),))
140143

141144
),
142145
),
@@ -157,6 +160,7 @@ class _GFToggleState extends State<GFToggle> with TickerProviderStateMixin{
157160
break;
158161
default:
159162
}
163+
widget.onChanged(isOn);
160164
},
161165
child: SlideTransition(
162166
position: offset,
@@ -165,7 +169,7 @@ class _GFToggleState extends State<GFToggle> with TickerProviderStateMixin{
165169
height: 20,
166170
width: 20,
167171
decoration: BoxDecoration(
168-
shape: widget.boxShape ?? BoxShape.circle,
172+
shape: widget.type == GFToggleType.square ? BoxShape.rectangle : widget.boxShape ?? BoxShape.circle,
169173
color: widget.enabledThumbColor ?? Colors.white,
170174
boxShadow: [
171175
new BoxShadow(

lib/types/gf_toggle_type.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
enum GFToggleType { android, ios, labeled ,square }
1+
enum GFToggleType { android, ios, custom ,square }

0 commit comments

Comments
 (0)