• Flutter中GetX系列四--BottomSheet(底部弹框)


    BottomSheet介绍

     

    BottomSheet 是底部弹出的一个组件,常用于单选、验证码二次校验弹窗等,GetXBottomSheet底部弹出是自定义通过路由push的方法实现底部弹窗的一个效果。

    BottomSheet使用

    我们可以通过GetX很轻松的调用bottomSheet(),而且无需传入context,下面我给出一个例子,使用GetX弹出bottomSheet并很轻松的实现切换主题

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

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

    1. import 'package:flutter/material.dart';
    2. import 'package:flutter_getx_example/DialogExample/DialogExample.dart';
    3. import 'package:get/get.dart';
    4. void main() {
    5. runApp(MyApp());
    6. }
    7. class MyApp extends StatelessWidget {
    8. @override
    9. Widget build(BuildContext context) {
    10. return GetMaterialApp(
    11. title: "GetX",
    12. home: DialogExample(),
    13. );
    14. }
    15. }

    第二步:调用BottomSheet

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

     Get.isDarkMode可以用来判断是否是夜晚模式
      Get.changeTheme(ThemeData.light())用来改变当前的主题模式

    1. import 'package:flutter/material.dart';
    2. import 'package:get/get.dart';
    3. class BottomSheetExample extends StatelessWidget {
    4. GlobalKey _navKey = GlobalKey();
    5. @override
    6. Widget build(BuildContext context) {
    7. return Scaffold(
    8. appBar: AppBar(
    9. title: Text("GetX Title"),
    10. ),
    11. body: Center(
    12. child: Column(
    13. mainAxisAlignment: MainAxisAlignment.center,
    14. crossAxisAlignment: CrossAxisAlignment.center,
    15. children: [
    16. ElevatedButton(onPressed: () {
    17. Get.bottomSheet(
    18. Container(
    19. child: Wrap(
    20. children: [
    21. ListTile(
    22. leading: Icon(Icons.wb_sunny_outlined),
    23. title: Text("白天模式"),
    24. onTap: () {
    25. //改变主题模式(白天模式还是夜晚模式)
    26. //Get.isDarkMode用来判断是否是夜晚模式
    27. Get.changeTheme(ThemeData.light());
    28. },
    29. ),
    30. ListTile(
    31. leading: Icon(Icons.wb_sunny),
    32. title: Text("黑夜模式"),
    33. onTap: () {
    34. //改变主题模式(白天模式还是夜晚模式)
    35. Get.changeTheme(ThemeData.dark());
    36. },
    37. )
    38. ],
    39. ),
    40. )
    41. );
    42. }, child: Text("Bottom Sheet"))
    43. ],
    44. ),
    45. ),
    46. );
    47. }
    48. }

    效果展示

    BottomSheet属性和说明 

    序列号字段属性描述
    1bottomsheetWidget弹出的Widget组件
    2backgroundColorColorbottomsheet的背景颜色
    3elevationdoublebottomsheet的阴影
    4persistentbool是否添加到路由中
    5shapeShapeBorder边框形状,一般用于圆角效果
    6clipBehaviorClip裁剪的方式
    7barrierColorColor弹出层的背景颜色
    8ignoreSafeAreabool是否忽略安全适配
    9isScrollControlledbool是否支持全屏弹出,默认false
    10useRootNavigatorbool是否使用根导航
    11isDismissiblebool点击背景是否可关闭,默认ture
    12enableDragbool是否可以拖动关闭,默认true
    13settingsRouteSettings路由设置
    14enterBottomSheetDurationDurationbottomsheet进入时的动画时间
    15exitBottomSheetDurationDurationbottomsheet退出时的动画时间

  • 相关阅读:
    三、ECMAScript 6 语法简介(1)
    HStreamDB v0.9 发布:分区模型扩展,支持与外部系统集成
    测试概念第三篇—注册登陆测试用例
    Django(五、视图层)
    C++炸弹小游戏
    java计算机毕业设计springboot+vue宠物服务管理系统(源码+系统+mysql数据库+Lw文档)
    深入浅出计算机组成原理(四):存储
    李沐的学习Pytorch环境配置
    招募 | 香港理工大学Georg Kranz 博士诚招博士
    产品经理就业喜报:念念不忘,必有回响
  • 原文地址:https://blog.csdn.net/eastWind1101/article/details/127996519