Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6829970

Browse files
增加Demo
1 parent 53361ed commit 6829970

File tree

5 files changed

+192
-39
lines changed

5 files changed

+192
-39
lines changed

‎example/lib/main.dart

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
library flutter_custom_dialog;
22

33
import 'package:flutter/material.dart';
4-
import 'package:flutter_custom_dialog/components/alert_dialog.dart';
4+
import 'package:flutter_custom_dialog/components/example/alert_dialog.dart';
55
import 'package:flutter_custom_dialog/components/bean/dialog_gravity.dart';
6-
import 'package:flutter_custom_dialog/components/listview_dialog.dart';
7-
import 'package:flutter_custom_dialog/components/progress_dialog.dart';
6+
import 'package:flutter_custom_dialog/components/example/listview_dialog.dart';
7+
import 'package:flutter_custom_dialog/components/example/progress_dialog.dart';
88

99
void main() => runApp(MyApp());
1010

@@ -57,7 +57,24 @@ showAlertDialog(BuildContext context) {
5757
}),
5858
],
5959
),
60-
Text("2、dialog gravity"),
60+
Text("2、dialog property"),
61+
Row(
62+
children: <Widget>[
63+
makeTextButton("duration", () {
64+
YYAlertDialogWithDuration(context);
65+
}),
66+
makeTextButton("barrier\ncolor", () {
67+
YYAlertDialogWithbarrierColor(context);
68+
}),
69+
makeTextButton("background\ncolor", () {
70+
YYAlertDialogWithBackgroundColor(context);
71+
}),
72+
makeTextButton("barrier\ndismiss", () {
73+
YYAlertDialogWithBarrierDismiss(context);
74+
}),
75+
],
76+
),
77+
Text("3、dialog gravity"),
6178
Row(
6279
children: <Widget>[
6380
makeTextButton("bottom", () {
@@ -95,7 +112,7 @@ showAlertDialog(BuildContext context) {
95112
}),
96113
],
97114
),
98-
Text("3、double button gravity"),
115+
Text("4、double button gravity"),
99116
Row(
100117
children: <Widget>[
101118
makeTextButton("left", () {
@@ -121,6 +138,12 @@ showAlertDialog(BuildContext context) {
121138
}),
122139
],
123140
),
141+
Text("5、dialog animation"),
142+
Row(
143+
children: <Widget>[
144+
makeTextButton("scaleIn", () {}),
145+
],
146+
),
124147
],
125148
),
126149
);
@@ -181,7 +204,11 @@ Widget makeTextButton(title, Function() function) {
181204
onPressed: () {
182205
function();
183206
},
184-
child: Text(title),
207+
child: Text(
208+
title,
209+
textAlign: TextAlign.center,
210+
style: TextStyle(fontSize: 12.0),
211+
),
185212
),
186213
);
187214
}

‎lib/components/alert_dialog.dart renamed to ‎lib/components/example/alert_dialog.dart

Lines changed: 123 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:flutter/material.dart';
2-
3-
import '../flutter_custom_dialog.dart';
4-
import 'bean/dialog_gravity.dart';
2+
import 'package:flutter_custom_dialog/components/bean/dialog_gravity.dart';
3+
import 'package:flutter_custom_dialog/flutter_custom_dialog.dart';
54

65
YYDialog YYAlertDialogBody(BuildContext context) {
76
return YYDialog().build(context)
@@ -93,6 +92,127 @@ YYDialog YYAlertDialogWithDivider(BuildContext context) {
9392
..show();
9493
}
9594

95+
YYDialog YYAlertDialogWithDuration(BuildContext context) {
96+
return YYDialog().build(context)
97+
..width = 240
98+
..borderRadius = 4.0
99+
..gravity = Gravity.left
100+
..duration = Duration(seconds: 1)
101+
..text(
102+
padding: EdgeInsets.all(18.0),
103+
text: "Dialog header",
104+
color: Colors.black,
105+
fontSize: 18.0,
106+
fontWeight: FontWeight.w500,
107+
)
108+
..text(
109+
padding: EdgeInsets.only(left: 18.0, right: 18.0),
110+
text: "Dialog body text",
111+
color: Colors.grey[500],
112+
)
113+
..doubleButton(
114+
padding: EdgeInsets.only(top: 24.0),
115+
gravity: Gravity.center,
116+
text1: "ACTION 1",
117+
color1: Colors.deepPurpleAccent,
118+
fontSize1: 14.0,
119+
text2: "ACTION 2",
120+
color2: Colors.deepPurpleAccent,
121+
fontSize2: 14.0,
122+
)
123+
..show();
124+
}
125+
126+
YYDialog YYAlertDialogWithbarrierColor(BuildContext context) {
127+
return YYDialog().build(context)
128+
..width = 240
129+
..borderRadius = 4.0
130+
..barrierColor = Colors.redAccent
131+
..text(
132+
padding: EdgeInsets.all(18.0),
133+
text: "Dialog header",
134+
color: Colors.black,
135+
fontSize: 18.0,
136+
fontWeight: FontWeight.w500,
137+
)
138+
..text(
139+
padding: EdgeInsets.only(left: 18.0, right: 18.0),
140+
text: "Dialog body text",
141+
color: Colors.grey[500],
142+
)
143+
..doubleButton(
144+
padding: EdgeInsets.only(top: 24.0),
145+
gravity: Gravity.center,
146+
text1: "ACTION 1",
147+
color1: Colors.deepPurpleAccent,
148+
fontSize1: 14.0,
149+
text2: "ACTION 2",
150+
color2: Colors.deepPurpleAccent,
151+
fontSize2: 14.0,
152+
)
153+
..show();
154+
}
155+
156+
YYDialog YYAlertDialogWithBackgroundColor(BuildContext context) {
157+
return YYDialog().build(context)
158+
..width = 240
159+
..borderRadius = 4.0
160+
..backgroundColor = Colors.yellow
161+
..text(
162+
padding: EdgeInsets.all(18.0),
163+
text: "Dialog header",
164+
color: Colors.black,
165+
fontSize: 18.0,
166+
fontWeight: FontWeight.w500,
167+
)
168+
..text(
169+
padding: EdgeInsets.only(left: 18.0, right: 18.0),
170+
text: "Dialog body text",
171+
color: Colors.grey[500],
172+
)
173+
..doubleButton(
174+
padding: EdgeInsets.only(top: 24.0),
175+
gravity: Gravity.center,
176+
text1: "ACTION 1",
177+
color1: Colors.deepPurpleAccent,
178+
fontSize1: 14.0,
179+
text2: "ACTION 2",
180+
color2: Colors.deepPurpleAccent,
181+
fontSize2: 14.0,
182+
)
183+
..show();
184+
}
185+
186+
YYDialog YYAlertDialogWithBarrierDismiss(BuildContext context) {
187+
return YYDialog().build(context)
188+
..width = 240
189+
..borderRadius = 4.0
190+
..barrierDismissible = false
191+
..text(
192+
padding: EdgeInsets.all(18.0),
193+
text: "Dialog header",
194+
color: Colors.black,
195+
fontSize: 18.0,
196+
fontWeight: FontWeight.w500,
197+
)
198+
..text(
199+
padding: EdgeInsets.only(left: 18.0, right: 18.0),
200+
text: "Dialog body text",
201+
color: Colors.grey[500],
202+
)
203+
..doubleButton(
204+
padding: EdgeInsets.only(top: 24.0),
205+
gravity: Gravity.center,
206+
text1: "ACTION 1",
207+
color1: Colors.deepPurpleAccent,
208+
fontSize1: 14.0,
209+
text2: "ACTION 2",
210+
color2: Colors.deepPurpleAccent,
211+
fontSize2: 14.0,
212+
)
213+
..show();
214+
}
215+
96216
YYDialog YYAlertDialogWithGravity(
97217
{context, width, gravity, doubleButtonGravity}) {
98218
return YYDialog().build(context)

‎lib/components/listview_dialog.dart renamed to ‎lib/components/example/listview_dialog.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_custom_dialog/components/bean/dialog_gravity.dart';
23
import 'package:flutter_custom_dialog/components/bean/dialog_item.dart';
3-
4-
import '../flutter_custom_dialog.dart';
5-
import 'bean/dialog_gravity.dart';
4+
import 'package:flutter_custom_dialog/flutter_custom_dialog.dart';
65

76
var listTileItems = [
87
ListTileItem(

‎lib/components/progress_dialog.dart renamed to ‎lib/components/example/progress_dialog.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:flutter/material.dart';
2-
3-
import '../flutter_custom_dialog.dart';
2+
import 'package:flutter_custom_dialog/flutter_custom_dialog.dart';
43

54
YYDialog YYProgressDialogNoBody(BuildContext context) {
65
return YYDialog().build(context)

‎lib/flutter_custom_dialog.dart

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@ import 'flutter_custom_dialog_widget.dart';
66

77
class YYDialog {
88
//================================弹窗属性======================================
9-
List<Widget> widgetList = [];
10-
BuildContext context;
9+
List<Widget> widgetList = []; //弹窗内部所有组件
10+
BuildContext context; //弹窗上下文
11+
1112
double width; //弹窗宽度
1213
double height; //弹窗高度
13-
Gravity gravity = Gravity.center; //弹窗位置
14-
Color backgroundColor = Colors.white; //弹窗背景
14+
Duration duration = Duration(milliseconds: 250); //弹窗动画出现的时间
15+
Gravity gravity = Gravity.center; //弹窗出现的位置
16+
Color barrierColor = Colors.black.withOpacity(.3); //弹窗外的背景色
17+
Color backgroundColor = Colors.white; //弹窗内的背景色
1518
double borderRadius = 0.0; //弹窗圆角
1619
BoxConstraints constraints; //弹窗约束
20+
AnimatedWidget animatedWidget; //弹窗出现的动画
21+
bool barrierDismissible = true; //是否点击弹出外部消失
1722
//============================================================================
1823

1924
YYDialog build(context) {
@@ -211,6 +216,10 @@ class YYDialog {
211216
CustomDialog(
212217
gravity: gravity,
213218
context: context,
219+
barrierColor: barrierColor,
220+
animatedWidget: animatedWidget,
221+
barrierDismissible: barrierDismissible,
222+
duration: duration,
214223
child: Column(
215224
textDirection: TextDirection.ltr,
216225
mainAxisAlignment: mainAxisAlignment,
@@ -312,11 +321,12 @@ class YYDialog {
312321
class CustomDialog {
313322
BuildContext _context;
314323
Widget _child;
315-
Duration _duration=Duration(milliseconds:250);
316-
Color _barrierColor=Colors.black.withOpacity(.3);
324+
Duration _duration;
325+
Color _barrierColor;
317326
RouteTransitionsBuilder _transitionsBuilder;
318-
bool _barrierDismissible = true;
319-
Gravity _gravity = Gravity.center;
327+
bool _barrierDismissible;
328+
Gravity _gravity;
329+
AnimatedWidget _animatedWidget;
320330

321331
CustomDialog({
322332
@required Widget child,
@@ -325,28 +335,25 @@ class CustomDialog {
325335
Color barrierColor,
326336
RouteTransitionsBuilder transitionsBuilder,
327337
Gravity gravity,
338+
AnimatedWidget animatedWidget,
339+
bool barrierDismissible,
328340
}) : _child = child,
329341
_context = context,
330-
_gravity = gravity {
331-
if (duration != null) {
332-
_duration = duration;
333-
}
334-
if (barrierColor != null) {
335-
_barrierColor = barrierColor;
336-
}
337-
if (transitionsBuilder != null) {
338-
_transitionsBuilder = transitionsBuilder;
339-
}
342+
_gravity = gravity,
343+
_duration = duration,
344+
_barrierColor = barrierColor,
345+
_transitionsBuilder = transitionsBuilder,
346+
_barrierDismissible = barrierDismissible {
340347
this.show();
341348
}
342349

343350
show() {
344351
showGeneralDialog(
345352
context: _context,
346-
barrierColor: _barrierColor,
347-
barrierDismissible: _barrierDismissible,
353+
barrierColor: _barrierColor??Colors.black.withOpacity(.3),
354+
barrierDismissible: _barrierDismissible??true,
348355
barrierLabel: "",
349-
transitionDuration: _duration,
356+
transitionDuration: _duration??Duration(milliseconds:250),
350357
transitionBuilder: _transitionsBuilder ?? _buildMaterialDialogTransitions,
351358
pageBuilder: (BuildContext buildContext, Animation<double> animation,
352359
Animation<double> secondaryAnimation) {
@@ -401,9 +408,10 @@ class CustomDialog {
401408
break;
402409
}
403410

404-
return SlideTransition(
405-
position: custom,
406-
child: child,
407-
);
411+
return _animatedWidget ??
412+
SlideTransition(
413+
position: custom,
414+
child: child,
415+
);
408416
}
409417
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /