cool_ui pub package

用flutter实现一些我认为好看的UI控件
希望大家提一些觉得不错的控件,我自己一个人想有时候想到的比较有限

Usage Add this to your package's pubspec.yaml file:

dependencies:
  cool_ui: "^0.1.6"

控件

CupertinoPopoverButton

仿iOS的UIPopover效果的

用于弹窗的按钮

CupertinoPopoverButton({
    this.child,
    this.popoverBuild,
    this.popoverColor=Colors.white,
    @required this.popoverWidth,
    @required this.popoverHeight,
    BoxConstraints popoverConstraints,
    this.onTap,
    this.transitionDuration=const Duration(milliseconds: 200),
    this.radius=8.0});
ParamTypeDefaultDescription
childWidget按钮的内容
popoverBuildWidgetBuilder生成弹出框的内容
popoverWidthdouble弹出框的宽度
popoverHeightdouble弹出框的高度
popoverConstraintsBoxConstraintsmaxHeight:123.0 maxWidth:150.0弹出框的最大最小高宽
onTapBoolCallback按钮点击事件,返回true取消默认反应(不打开Popover)
popoverColorColor白色弹出框的背景颜色
transitionDurationDuration0.2s过度动画时间
radiusdouble8.0弹出框的圆角弧度

Example

CupertinoPopoverButton(
        child: Container(
          margin: EdgeInsets.all(20.0),
          width: 80.0,
          height: 40.0,
          decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.all(Radius.circular(5.0)),
              boxShadow: [BoxShadow(color: Colors.black12,blurRadius: 5.0)]
          ),
          child: Center(child:Text('左上角')),
        ),
        popoverBuild:(BuildContext context){
              return  Container(
                          width: 100.0,
                          height: 100.0,
                          child: Text('左上角内容'),
                        )
        });

CupertinoPopoverMenuList

Popover弹出的菜单样式列表,一般与CupertinoPopoverMenuItem一起用,会给两个Item加间隔线

CupertinoPopoverMenuList({this.children})
ParamTypeDescription
childrenList子元素,一般是CupertinoPopoverMenuItem

CupertinoPopoverMenuItem

单个菜单项

const CupertinoPopoverMenuItem({
    this.leading,
    this.child,
    this.onTap,
    this.isTapClosePopover=true
  });

| --- | --- | --- | --- | | leading | Widget | 菜单左边,一般放图标 | | child | Widget | 菜单内容 | | onTap | BoolCallback | | 按钮点击事件,返回true取消默认反应(不关闭Popover) | | isTapClosePopover | bool | 是否点击关闭 |

案例核心代码

    CupertinoPopoverMenuList(
                    children: <Widget>[
                      CupertinoPopoverMenuItem(leading: Icon(Icons.add),child: Text("新增"),),
                      CupertinoPopoverMenuItem(leading: Icon(Icons.edit),child: Text("修改"),),
                      CupertinoPopoverMenuItem(leading: Icon(Icons.delete),child: Text("删除"),)
                    ],
                  )

showWeuiToast

仿Weui的Toast效果

VoidCallback showWeuiToast({
  @required BuildContext context,
  @required Widget message,
  @required Widget icon,
  Alignment alignment = const Alignment(0.0,-0.2),
  RouteTransitionsBuilder transitionBuilder})
ParamTypeDefaultDescription
contextBuildContext上下文
messageWidget提示消息
alignmentAlignment默认是居中偏上Toast的位置
iconWidget图标
transitionBuilderRouteTransitionsBuilder自定义过度动画

返回参数:VoidCallback,用于关闭Toast

showWeuiSuccessToast

仿Weui的SuccessToast效果

Future showWeuiSuccessToast({
  @required BuildContext context,
  @required Widget message=const Text("成功"),
  Alignment alignment = const Alignment(0.0,-0.2),
  RouteTransitionsBuilder transitionBuilder,
  Duration closeDuration = const Duration(seconds: 3)
  })
ParamTypeDefaultDescription
contextBuildContext上下文
transitionBuilderRouteTransitionsBuilder自定义过度动画
alignmentAlignment默认是居中偏上Toast的位置
messageWidget成功提示消息
closeDurationDuration3s关闭时间

返回参数:Future dart 异步操作,代表Toast已关闭

showWeuiLoadingToast

仿Weui的LoadingToast效果

VoidCallback showWeuiToast({
  @required BuildContext context,
  @required Widget message,
  Alignment alignment = const Alignment(0.0,-0.2),
  RouteTransitionsBuilder transitionBuilder
  })
ParamTypeDefaultDescription
contextBuildContext上下文
messageWidget提示消息
alignmentAlignment默认是居中偏上Toast的位置
transitionBuilderRouteTransitionsBuilder自定义过度动画

返回参数:VoidCallback,用于关闭Toast

Libraries

cool_ui