Flutter完全开发手册
  • Flutter GetX调用snackbar、Dialog、BottomSheet

    Flutter GetX调用snackbar、Dialog、BottomSheet
    我们可以通过GetX很轻松的调用上面组件,而且无需传入上下文context

    Snackbar提示信息:

    如果想在应用程序中触发某些特定的事件后,需要弹出一则快捷消息,那么使用Snackbar则是最佳的选择,Snackbar 和我们前面讲的toast有点相似,接下来我们看一下GetX如何来联调Snackbar来使用。

    Snackbar基本使用:

    第一步:应用程序入口设置

    当我们导入依赖后,在应用程序顶层把GetMaterialApp 作为顶层,如下所示

    
    import 'package:flutter/material.dart';
    import 'package:get/get.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
      @override
      Widget build(BuildContext context) {
        return const GetMaterialApp(
          debugShowCheckedModeBanner: false, //去掉debug图标
          title: 'Flutter GetX',
          home: MyHomePage(),
        );
      }
    }
    

    第二步:调用snackbar

    我们可以通过Get.snackbar() 来显示 snackbar ,如下所示

    
    Get.snackbar(
    "提示!", "这是一条通知",
    icon: Icon(Icons.alarm), 
    snackPosition: SnackPosition.BOTTOM
    ); 
    

    Snackbar属性和说明

    字段属性描述
    titleString弹出的标题文字
    messageString弹出的消息文字
    colorTextColortitle和message的文字颜色
    durationDurationSnackbar弹出的持续时间(默认3秒)
    instantInitbool当false可以把snackbar 放在initState,默认true
    snackPositionSnackPosition弹出时的位置,有两个选项【TOP,BOTTOM】默认TOP
    titleTextWidget弹出标题的组件,设置该属性会导致title属性失效
    messageTextWidget弹出消息的组件,设置该属性会导致messageText属性失效
    iconWidget弹出时图标,显示在title和message的左侧
    shouldIconPulsebool弹出时图标是否闪烁,默认false
    maxWidthdoubleSnackbar最大的宽度
    marginEdgeInsetsSnackbar外边距,默认zero
    paddingEdgeInsetsSnackbar内边距,默认EdgeInsets.all(16)
    borderRadiusdouble边框圆角大小,默认15
    borderColorColor边框的颜色,必须设置borderWidth,否则无效果
    borderWidthdouble边框的线条宽度
    backgroundColorColorSnackbar背景颜色,默认Colors.grey.withOpacity(0.2)
    leftBarIndicatorColorColor左侧指示器的颜色
    boxShadowsListSnackbar阴影颜色
    backgroundGradientGradient背景的线性颜色
    mainButtonTextButton主要按钮,一般显示发送、确认按钮
    onTapOnTap点击Snackbar事件回调
    isDismissiblebool是否开启Snackbar手势关闭,可配合dismissDirection使用
    showProgressIndicatorbool是否显示进度条指示器,默认false
    dismissDirectionSnackDismissDirectionSnackbar关闭的方向
    progressIndicatorControllerAnimationController进度条指示器的动画控制器
    progressIndicatorBackgroundColorColor进度条指示器的背景颜色
    progressIndicatorValueColorAnimation进度条指示器的背景颜色,Animation
    snackStyleSnackStyleSnackbar是否会附加到屏幕边缘
    forwardAnimationCurveCurveSnackbar弹出的动画,默认Curves.easeOutCirc
    reverseAnimationCurveCurveSnackbar消失的动画,默认Curves.easeOutCirc
    animationDurationDurationSnackbar弹出和小时的动画时长,默认1秒
    barBlurdoubleSnackbar背景的模糊度
    overlayBlurdouble弹出时的毛玻璃效果值,默认0
    snackbarStatusSnackbarStatusCallbackSnackbar弹出或消失时的事件回调(即将打开、已打开、即将关闭、已关闭)
    overlayColorColor弹出时的毛玻璃的背景颜色
    userInputFormForm用户输入表单

    Dialog对话框:

    我们可以通过Get.defaultDialog()  调用Dialog来显示 dialog ,如下所示

    
    // 默认对话框
    Get.defaultDialog(
    	title: "提示",
    	content: const Row(
    	  mainAxisAlignment: MainAxisAlignment.center,
    	  children: [
    		Icon(Icons.error),
    		Text("您确定退出登录?", style: TextStyle(color: Colors.blue))
    	  ],
    	),
    );
    
    
    Get.defaultDialog(
    	title: "提示",
    	middleText: "您确定要删除吗?",
    	//确定按钮
    	confirm: ElevatedButton(
    		onPressed: () {
    		  print("确定");
    		  Get.back(); 
    		},
    		child: const Text("确定")),
    	//取消按钮
    	cancel: ElevatedButton(
    	  onPressed: () {
    		print("取消");
    		Get.back();
    	  },
    	  child: const Text("取消"),
    	),
      );
    

    Dialog属性和说明

    字段属性描述
    titleString弹出的标题,默认(Alert)
    titlePaddingEdgeInsetsGeometry标题的内边距,默认(EdgeInsets.all(8))
    titleStyleTextStyle标题的样式
    middleTextString中间内容区域显示的文字
    middleTextStyleTextStyle中间内容区域显示的文字样式
    contentWidget弹出的内容,该值设置后middleText将无效
    contentPaddingEdgeInsetsGeometry内容的内边距,默认(EdgeInsets.all(8))
    onConfirmVoidCallback确认按钮回调
    onCancelVoidCallback取消按钮回调
    onCustomVoidCallback自定义按钮回调
    cancelTextColorColor取消按钮文字的颜色
    confirmTextColorColor确认按钮文字的颜色
    textConfirmString确认按钮的文字
    textCancelString取消按钮的文字
    textCustomString自定义按钮的文字
    confirmWidget确认按钮的组件
    cancelWidget取消按钮的组件
    customWidget自定义按钮的组件
    backgroundColorColor弹出框的背景颜色
    barrierDismissiblebool是否可以通过点击背景关闭弹窗
    buttonColorColor按钮的文字颜色,根据按钮类型来设定不同的位置
    radiusdouble弹出框的圆角大小,默认20
    actionsList增加额外的子组件
    onWillPopWillPopCallback拦截关闭之前做一些操作
    navigatorKeyGlobalKey用于打开对话框的key

    BottomSheet底部弹窗:

    BottomSheet 是底部弹出的一个组件。

    我们可以通过Get.bottomSheet() 来显示 BottomSheet ,如下所示

    
    //BottomSheet底部弹窗
    Get.bottomSheet(
    	Container(
    	  height: 260,
    	  color: Colors.white,
    	  child: Column(
    		crossAxisAlignment: CrossAxisAlignment.center,
    		children: [
    		  ListTile(
    			  title: Text("分享到 QQ"),
    			  onTap: () {
    				 Get.back();
    			  }),
    		  ListTile(
    			  title: Text("分享到 微信 "),
    			  onTap: () {
    				 Get.back();
    			  }),
    		  ListTile(
    			  title: Text("分享到 微博"),
    			  onTap: () {
    				 Get.back();
    			  }),
    		  ListTile(
    			  title: Text("分享到 知乎"),
    			  onTap: () {
    				 Get.back();
    			  }),
    		],
    	  ),
    	),
    );
    

    BottomSheet属性和说明

    字段属性描述
    bottomsheetWidget弹出的Widget组件
    backgroundColorColorbottomsheet的背景颜色
    elevationdoublebottomsheet的阴影
    persistentbool是否添加到路由中
    shapeShapeBorder边框形状,一般用于圆角效果
    clipBehaviorClip裁剪的方式
    barrierColorColor弹出层的背景颜色
    ignoreSafeAreabool是否忽略安全适配
    isScrollControlledbool是否支持全屏弹出,默认false
    useRootNavigatorbool是否使用根导航
    isDismissiblebool点击背景是否可关闭,默认ture
    enableDragbool是否可以拖动关闭,默认true
    settingsRouteSettings路由设置
    enterBottomSheetDurationDurationbottomsheet进入时的动画时间
    exitBottomSheetDurationDurationbottomsheet退出时的动画时间
    上一篇:没有了下一篇:Flutter Getx路由管理,页面跳转与传值