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),
              ),
            ),
          ),
        ),
      ),
    );
  }
相关文章
|
2月前
|
iOS开发 UED
Flutter 动态修改应用图标功能指南
探索Flutter中动态应用图标的实现方法,了解如何为用户提供独特体验,促进用户升级和应用内购买。
100 0
Flutter 动态修改应用图标功能指南
|
JSON Dart IDE
Flutter实现国际化
开发一个App,如果我们的App需要面向不同的语种(比如中文、英文、繁体等),那么我们需要对齐进行国际化开发
902 0
Flutter实现国际化
|
8月前
|
存储 缓存 安全
Flutter:类功能索引(全)
本文以表描述形式收录了Flutter中提供的各个类,旨在方便地进行查询相关组件。
198 2
|
7月前
|
API 开发者 索引
Flutter笔记:发布一个多功能轮播组件 awesome_carousel
awesome_carousel 模块是一个Flutter轮播图模块。可以实现包括自定义指示器、动画、滚动等等众多功能。能够指定相当多地细节(可以参考 API 部分了解)本文给出 awesome_carousel 模块的两个简单的用法示例。
90 0
|
11月前
|
容器
Flutter的手势识别功能实现GestureDetector
Flutter的手势识别功能实现GestureDetector
Flutter 底部导航栏BottomNavigationBar,并关联PageView实现滑动切换
Flutter 底部导航栏BottomNavigationBar,并关联PageView实现滑动切换
311 0
Flutter如何将文本与图片混合编辑?(功能扩展篇)
一个优秀的富文本,应该包含优秀的排版算法、丰富的功能和渲染的高性能。在上一篇中,我们实现了可扩展的、基础的富文本编辑器。那么在本文中,让我们对富文本进行更多功能的扩展。
Flutter如何将文本与图片混合编辑?(功能扩展篇)
|
存储 索引
Flutter从0到1实现高性能、多功能的富文本编辑器(基础实战篇)
在上一章中,我们分析了一个富文本编辑器需要有哪些模块组成。在本文中,让我们从零开始,去实现自定义的富文本编辑器。
|
JSON Android开发 数据格式
Flutter从0到1实现高性能、多功能的富文本编辑器(模块分析篇)
经过前面两篇文章的基础知识铺垫,我们终于要进入到专栏的核心内容 — 富文本。富文本编辑器可以说是APP中最复杂,但使用场景又极广的组件之一。例如各大笔记APP的核心功能、闲鱼的商品发布功能、还
Flutter从0到1实现高性能、多功能的富文本编辑器(模块分析篇)
|
API
Flutter 用 Dio的 Patch请求完成数据编辑功能
本篇介绍了详情数据的获取,实体对象的部分修改来展示 Dio的 patch 请求。可以看到,Dio 提供的一系列 Restful 请求的方式基本相同,可以做到更好的封装。
246 0
Flutter 用 Dio的 Patch请求完成数据编辑功能