flutter实现底部弹出框以及特色功能

简介: 今天项目中要实现底部弹出框并且实现圆角功能,先来预览一下可以看出实现的公告有底部圆角,以及朋友圈,微信转发等实现逻辑我直接代码列出

今天项目中要实现底部弹出框并且实现圆角功能,先来预览一下

可以看出实现的公告有

底部圆角,以及朋友圈,微信转发等

实现逻辑我直接代码列出

image.png

定义

List<String> nameItems = <String>['微信', '朋友圈', 'QQ', 'QQ空间', '微博', '链接'];
  List selects = [];
  int count = 0;
  // 这个urlItems这里没有用到
  List<String> urlItems = <String>[
    'images/wexin_icon.png',
    'images/friend_icon.png',
    'images/qq_icon.png',
    'images/qq_zon_icon.png',
    'images/weibo_icon.png',
    'images/link_icon.png',
  ];

开始操作

  void showBottomSheet() {
    //用于在底部打开弹框的效果
    showModalBottomSheet(
        builder: (BuildContext context) {
          //构建弹框中的内容
          return buildBottomSheetWidget(context);
        },
        backgroundColor: Colors.transparent,//重要
        context: context);
  }

下面

 ///底部弹出框的内容
  Widget buildBottomSheetWidget(BuildContext context) {
    return Container(
        height: 500.w,
        decoration: new BoxDecoration(
            color: Colors.white,
            borderRadius: new BorderRadius.only(
                topLeft: const Radius.circular(25.0),
                topRight: const Radius.circular(25.0))),
        child: new Column(
          children: [
            Text(
              "邀请好友",
              style: TextStyle(
                color: Color(0xFF36393D),
                fontSize: 46.w,
              ),
            ),
            commonButtonWidget(
                fontsize: 16,
                txt: "邀请",
                ontap: () {
                  print("11");
                }),
            Container(
              width: MediaQuery.of(context).size.width,
              padding: EdgeInsets.only(left: 10),
              child: Text("去邀请"),
            ),
            Container(
              height: 100,
              child: ListView.builder(
                scrollDirection: Axis.horizontal,
                itemBuilder: (BuildContext context, int index) {
                  return InkWell(
                    child: Container(
                      child: new Column(
                        children: <Widget>[
                          new Padding(
                            padding: EdgeInsets.fromLTRB(0.0, 6.0, 0.0, 6.0),
                            child: Image.asset(
                              urlItems[index],
                              width: 48,
                            ),
                          ),
                          new Text(nameItems[index])
                        ],
                      ),
                    ),
                    onTap: () {
                      switch (nameItems[index]) {
                        case '微信':
                          print("微信");
                          break;
                        case '朋友圈':
                          print("朋友圈");
                          break;
                        case 'QQ':
                          print("QQ");
                          break;
                        case 'QQ空间':
                          print("QQ空间");
                          break;
                        case '微博':
                          print("微博");
                          break;
                      }
                    },
                  );
                },
                itemCount: nameItems.length,
              ),
            ),
          ],
        ));
  }

这是邀请按钮的基础上封装的组件

  Widget commonButtonWidget(
      {String txt,
      Color fontcolor,
      Color backcolor,
      double fontsize,
      Function ontap}) {
    String txt = "邀请";
    Color fontcolor = Color(0xFF19D88E);
    Color backcolor = Color(0xFF19D88E).withOpacity(0.2);
    double fontsize = 18;
    return new Center(
      child: new Material(
//INK可以实现装饰容器
        child: new Ink(
          //用ink圆角矩形
          decoration: new BoxDecoration(
            //不能同时”使用Ink的变量color属性以及decoration属性,两个只能存在一个
            color: backcolor,
            //设置圆角
            borderRadius: new BorderRadius.all(new Radius.circular(25.0)),
          ),
          child: new InkWell(
            //圆角设置,给水波纹也设置同样的圆角
            //如果这里不设置就会出现矩形的水波纹效果
            borderRadius: new BorderRadius.circular(25.0),
            //设置点击事件回调
            onTap: () {
              ontap();
            },
            child: new Container(
              width: 300.0,
              height: 36.0,
              //设置child 居中
              alignment: Alignment(0, 0),
              child: Text(
                txt,
                style: TextStyle(color: fontcolor, fontSize: fontsize),
              ),
            ),
          ),
        ),
      ),
    );
  }
相关文章
|
6月前
|
iOS开发 UED
Flutter 动态修改应用图标功能指南
探索Flutter中动态应用图标的实现方法,了解如何为用户提供独特体验,促进用户升级和应用内购买。
204 0
Flutter 动态修改应用图标功能指南
|
6月前
|
移动开发 JavaScript 前端开发
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
【5月更文挑战第15天】Uniapp 和 Flutter 是跨平台开发的热门框架。Uniapp 以其强大的跨平台兼容性和基于 Vue.js 的易学性著称,适合快速开发适用于 iOS、Android 和 H5 的应用。其丰富的组件生态简化了功能集成。然而,在复杂场景下,性能可能不及原生。Flutter 则以其全新渲染引擎实现流畅界面和高度自定义,性能接近原生,但学习成本较高,需处理特定平台适配。适用于高要求的项目。两者各有优势,选择应考虑项目需求、技术储备和开发周期。
824 1
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
|
1月前
|
开发者
flutter:功能性组件 (八)
本文介绍了Flutter中常用的UI组件和功能,包括进度指示器(线性和圆形)、下拉刷新、选项按钮(单选按钮、复选框、开关)、手势识别(GestureDetector、Ink和InkWell)以及提示和Offstage组件的使用方法和示例代码。这些组件和功能可以帮助开发者快速构建交互丰富的应用程序界面。
|
5月前
|
Dart 监控 开发者
详细介绍Flutter Profiler的功能、使用方法以及如何利用它来提升应用的性能
【6月更文挑战第11天】Flutter Profiler是用于优化Flutter应用的关键工具,提供CPU、GPU、内存和网络分析。它帮助开发者监控运行时性能,识别瓶颈,如CPU过度使用、渲染问题、内存泄漏和网络效率低。通过选择分析类型、开始分析、查看结果,开发者可进行针对性优化。最佳实践包括定期分析、结合实际场景、关注关键指标及结合其他工具。有效利用Profiler能提升应用性能和用户体验。
168 2
|
5月前
|
开发框架 开发者 UED
Flutter作为一款跨平台的移动应用开发框架,自然也提供了丰富的工具和功能来支持可访问性和无障碍设计
【6月更文挑战第11天】Flutter是一款注重可访问性设计的跨平台移动应用开发框架,提供语义化组件、文本缩放、对比度调整、动态内容更新通知和键盘导航等功能,支持无障碍体验。开发者应结合简化操作、清晰反馈、多输入方式支持及测试优化等原则,以创建包容性更强的应用,满足不同用户需求,体现社会责任。
64 1
|
5月前
|
开发框架 Dart JavaScript
深入探讨Flutter中的Web支持功能,以及如何利用Flutter构建跨平台Web应用的最佳实践
【6月更文挑战第11天】Flutter,Google的开源跨平台框架,已延伸至Web支持,让开发者能用同一代码库构建移动和Web应用。Flutter Web基于Dart转JavaScript,利用WebAssembly和JavaScript在Web上运行。构建Web应用最佳实践包括选择合适项目、优化性能、进行兼容性测试和利用Flutter的声明式UI、热重载等优势。尽管性能挑战存在,Flutter Web为跨平台开发提供了更多机会和潜力。
94 1
|
4月前
|
缓存 容器
Flutter实现仿微信群头像功能
Flutter实现仿微信群头像功能
69 0
|
4月前
|
缓存
Flutter仿Boss-6.底部tab切换
Flutter仿Boss-6.底部tab切换
39 0
|
4月前
Flutter-底部弹出框(Widget层级)
文章描述了如何在Flutter中使用DraggableScrollableSheet创建一个底部弹出框,同时保持其可手势滑动关闭。作者遇到问题并提出对原控件进行扩展,以支持头部和列表布局的滑动关闭功能。
186 0
|
存储 缓存 安全
Flutter:类功能索引(全)
本文以表描述形式收录了Flutter中提供的各个类,旨在方便地进行查询相关组件。
246 2