提交 bf073604 authored 作者: Kevin's avatar Kevin

更改了onTap事件

上级 e4f0bbb5
## [0.1.4] - TODO:修改了onTap事件
* TODO: CupertionPopoverButton添加了onTap事件,返回True不打开Popover
* TODO: CupertinoPopoverMenuItem修改了onTap事件,返回True不关闭Popover
## [0.1.1] - TODO:添加了WeuiToast效果,完善了文档信息 ## [0.1.1] - TODO:添加了WeuiToast效果,完善了文档信息
* TODO: 添加了WeuiToast效果 * TODO: 添加了WeuiToast效果
* TODO: 完善了文档信息 * TODO: 完善了文档信息
......
...@@ -6,7 +6,7 @@ Usage ...@@ -6,7 +6,7 @@ Usage
Add this to your package's pubspec.yaml file: Add this to your package's pubspec.yaml file:
``` yaml ``` yaml
dependencies: dependencies:
cool_ui: "^0.1.1" cool_ui: "^0.1.4"
``` ```
# 控件 # 控件
...@@ -30,6 +30,7 @@ CupertinoPopoverButton({ ...@@ -30,6 +30,7 @@ CupertinoPopoverButton({
this.popoverColor=Colors.white, this.popoverColor=Colors.white,
@required this.popoverWidth, @required this.popoverWidth,
@required this.popoverHeight, @required this.popoverHeight,
this.onTap,
this.transitionDuration=const Duration(milliseconds: 200), this.transitionDuration=const Duration(milliseconds: 200),
this.radius=8.0}); this.radius=8.0});
``` ```
...@@ -41,6 +42,7 @@ CupertinoPopoverButton({ ...@@ -41,6 +42,7 @@ CupertinoPopoverButton({
| popoverBuild | <code>WidgetBuilder</code> | | 生成弹出框的内容 | | popoverBuild | <code>WidgetBuilder</code> | | 生成弹出框的内容 |
| popoverWidth | <code>double</code> | | 弹出框的宽度 | | popoverWidth | <code>double</code> | | 弹出框的宽度 |
| popoverHeight | <code>double</code> | | 弹出框的高度 | | popoverHeight | <code>double</code> | | 弹出框的高度 |
| [onTap] | <code>BoolCallback</code> | | 按钮点击事件,返回true取消默认反应(不打开Popover) |
| [popoverColor] | <code>Color</code> | 白色 | 弹出框的背景颜色 | | [popoverColor] | <code>Color</code> | 白色 | 弹出框的背景颜色 |
| [transitionDuration] | <code>Duration</code> | 0.2s | 过度动画时间 | | [transitionDuration] | <code>Duration</code> | 0.2s | 过度动画时间 |
| [radius] | <code>double</code> | 8.0 | 弹出框的圆角弧度 | | [radius] | <code>double</code> | 8.0 | 弹出框的圆角弧度 |
...@@ -99,7 +101,7 @@ const CupertinoPopoverMenuItem({ ...@@ -99,7 +101,7 @@ const CupertinoPopoverMenuItem({
| --- | --- | --- | | --- | --- | --- |
| [leading] | <code>Widget<Widget></code> | 菜单左边,一般放图标 | | [leading] | <code>Widget<Widget></code> | 菜单左边,一般放图标 |
| [child] | <code>Widget<Widget></code> | 菜单内容 | | [child] | <code>Widget<Widget></code> | 菜单内容 |
| [onTap] | <code>VoidCallback<Widget></code> |菜单点击事件 | | [onTap] | <code>BoolCallback</code> | | 按钮点击事件,返回true取消默认反应(不关闭Popover) |
| [isTapClosePopover] | <code>bool<Widget></code> | 是否点击关闭 | | [isTapClosePopover] | <code>bool<Widget></code> | 是否点击关闭 |
#### 案例核心代码 #### 案例核心代码
......
part of cool_ui; part of cool_ui;
typedef BoolCallback = bool Function();
class CupertinoPopoverButton extends StatelessWidget{ class CupertinoPopoverButton extends StatelessWidget{
final Widget child; final Widget child;
final Widget popoverBody; final Widget popoverBody;
...@@ -9,9 +10,9 @@ class CupertinoPopoverButton extends StatelessWidget{ ...@@ -9,9 +10,9 @@ class CupertinoPopoverButton extends StatelessWidget{
final Color popoverColor; final Color popoverColor;
final double radius; final double radius;
final Duration transitionDuration; final Duration transitionDuration;
final BoolCallback onTap;
const CupertinoPopoverButton({ const CupertinoPopoverButton({
@required this.child, @required this.child,
@Deprecated( @Deprecated(
'建议不要直接使用popoverBody,而是使用popoverBuild.' '建议不要直接使用popoverBody,而是使用popoverBuild.'
) )
...@@ -20,6 +21,7 @@ class CupertinoPopoverButton extends StatelessWidget{ ...@@ -20,6 +21,7 @@ class CupertinoPopoverButton extends StatelessWidget{
this.popoverColor=Colors.white, this.popoverColor=Colors.white,
@required this.popoverWidth, @required this.popoverWidth,
@required this.popoverHeight, @required this.popoverHeight,
this.onTap,
this.transitionDuration=const Duration(milliseconds: 200), this.transitionDuration=const Duration(milliseconds: 200),
this.radius=8.0}): this.radius=8.0}):
assert(popoverBody != null || popoverBuild != null), assert(popoverBody != null || popoverBuild != null),
...@@ -32,6 +34,9 @@ class CupertinoPopoverButton extends StatelessWidget{ ...@@ -32,6 +34,9 @@ class CupertinoPopoverButton extends StatelessWidget{
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.translucent, behavior: HitTestBehavior.translucent,
onTap: (){ onTap: (){
if(onTap != null && onTap()){
return;
}
var offset = WidgetUtil.getWidgetLocalToGlobal(context); var offset = WidgetUtil.getWidgetLocalToGlobal(context);
var bounds = WidgetUtil.getWidgetBounds(context); var bounds = WidgetUtil.getWidgetBounds(context);
var body = popoverBody; var body = popoverBody;
...@@ -122,15 +127,6 @@ class CupertinoPopoverState extends State<CupertinoPopover> with TickerProvider ...@@ -122,15 +127,6 @@ class CupertinoPopoverState extends State<CupertinoPopover> with TickerProvider
isArrowUp = ScreenUtil.screenHeight > widget.attachRect.bottom + widget.height + _arrowWidth; isArrowUp = ScreenUtil.screenHeight > widget.attachRect.bottom + widget.height + _arrowWidth;
super.initState(); super.initState();
calcRect(); calcRect();
// animation = new AnimationController(
// duration: widget.transitionDuration,
// vsync: this
// );
// // Tween({T begin, T end }):创建tween(补间)
// doubleAnimation = new Tween<double>(begin: 0.0, end: 1.0).animate(animation)..addListener((){
// setState((){});
// });
// animation.forward(from: 0.0);
} }
@override @override
......
...@@ -27,7 +27,7 @@ class CupertinoPopoverMenuList extends StatelessWidget{ ...@@ -27,7 +27,7 @@ class CupertinoPopoverMenuList extends StatelessWidget{
class CupertinoPopoverMenuItem extends StatefulWidget{ class CupertinoPopoverMenuItem extends StatefulWidget{
final Widget leading; final Widget leading;
final Widget child; final Widget child;
final VoidCallback onTap; final BoolCallback onTap;
final bool isTapClosePopover; final bool isTapClosePopover;
const CupertinoPopoverMenuItem({ const CupertinoPopoverMenuItem({
...@@ -73,8 +73,8 @@ class CupertinoPopoverMenuItemState extends State<CupertinoPopoverMenuItem>{ ...@@ -73,8 +73,8 @@ class CupertinoPopoverMenuItemState extends State<CupertinoPopoverMenuItem>{
setState(() { setState(() {
isDown = false; isDown = false;
}); });
if(widget.onTap != null){ if(widget.onTap != null && widget.onTap()){
widget.onTap(); return;
} }
if(widget.isTapClosePopover){ if(widget.isTapClosePopover){
Navigator.of(context).pop(); Navigator.of(context).pop();
......
name: cool_ui name: cool_ui
description: 用flutter实现一些我认为好看的UI控件,目前暂时只有Popover,Weui,不过有什么觉得好看的可以提Issue description: 用flutter实现一些我认为好看的UI控件,目前暂时只有Popover,Weui,不过有什么觉得好看的可以提Issue
version: 0.1.3 version: 0.1.4
author: Kevin <liangkaikevin@gmail.com> author: Kevin <liangkaikevin@gmail.com>
homepage: https://github.com/Im-Kevin/cool_ui homepage: https://github.com/Im-Kevin/cool_ui
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论