flutter AppBar滚动渐变

不墨迹先上图


2019-12-07 21.44.48.gif

这个需求应该是挺多的,今天用flutter 实现以下 , 直接上代码.
我没有过多的封装,为了一次性贴出来,我自定义的组件 你可以写自己的,
如果项目自己用,最好封装好,这样看着代码很乱
这里只要的知识点是
1: 监听

NotificationListener(
             onNotification: (ScrollNotification notification) {
               if (notification is ScrollUpdateNotification &&
                   notification.depth == 0) {
                 _onScroll(notification.metrics.pixels);
               }
             },

//以下是API
print(metrics.pixels);// 当前位置
print(metrics.atEdge);//是否在顶部或底部
print(metrics.axis);//垂直或水平滚动
print(metrics.axisDirection);// 滚动方向是down还是up
print(metrics.extentAfter);//视口底部距离列表底部有多大
print(metrics.extentBefore);//视口顶部距离列表顶部有多大
print(metrics.extentInside);//视口范围内的列表长度
print(metrics.maxScrollExtent);//最大滚动距离,列表长度-视口长度
print(metrics.minScrollExtent);//最小滚动距离
print(metrics.viewportDimension);//视口长度
print(metrics.outOfRange);//是否越过边界

2:Stack 的使用
stack 可以把下面的View 放到上面 API 大家自行查看把

3: color 颜色问题
hexToColor('#31bd48') 一个支持颜色的方法, 代码贴一下出来吧


Color hexToColor(String s) {
  // 如果传入的十六进制颜色值不符合要求,返回默认值
  if (s == null || s.length != 7 || int.tryParse(s.substring(1, 7), radix: 16) == null) {
    s = '#999999';
  }

  return new Color(int.parse(s.substring(1, 7), radix: 16) + 0xFF000000);
}
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String hpCon = '';
//定义透明度
  double appBarAlpha = 0;
  @override
  void initState() 
    super.initState();
  }

/**
 * 滚动的距离
 */
  _onScroll(offset) {
    double alpha = offset / 100;
    print(offset);
    if (alpha < 0) {
      alpha = 0;
    } else if (alpha > 1) {
      alpha = 1;
    }

    setState(() {
      appBarAlpha = alpha;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        // appBar: AppBar(
        //   title: NavBar(),
        //   backgroundColor: hexToColor('#31bd48'),
        // ),
        body: Stack(
      children: <Widget>[
        MediaQuery.removePadding(
          removeTop: true,
          context: context,
          child: Container(
            child: Consumer<HomeModel>(builder: (_, homeModel, __) {
              //这里是个监听,监听listview滚动
              return NotificationListener(
                onNotification: (ScrollNotification notification) {
                  if (notification is ScrollUpdateNotification &&
                      notification.depth == 0) {
                    _onScroll(notification.metrics.pixels);
                  }
                },
                child: ListView(
                  children: <Widget>[
                    Container(
                      height: ScreenUtil().setHeight(240),
                    //这里是轮播图,也是可以自己写的
                      child: HomePageSwiper(),
                    ),
                    Container(
                      height: 800,
                      child: Text(''),
                    )
                  ],
                ),
              );
            }),
          ),
        ),
        //这里是搜索框
       //这里可以自定义组件,使用自己的头,我的是项目的
        Opacity(
          opacity: appBarAlpha,//滑动offset改变透明度 
          child: Container(
              decoration: BoxDecoration(
                color: hexToColor('#31bd48'),
              ),
              height: 100,
              child: Padding(
                padding: EdgeInsets.only(top: 44),
                child: NavBar(),
              )),
        )
      ],
    ));
    // );
  }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容

  • 官方英文原文: https://flutter.io/flutter-for-android/ 说明:此文上接 给...
    horseLai阅读 2,272评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,076评论 1 32
  • 这是一场没有硝烟的战争,这是一出自己跟自己决斗的戏码。我要战胜人类本能——惰性,我要看到一个无限可能的自己。 虽然...
    儒花阅读 263评论 2 3
  • 在河北省丰宁满族自治县五道营乡有一株远近闻名的古松,被称为“九龙松”。 九龙松,号称“天下第一奇松”。 从远处看,...
    志枚阅读 625评论 2 3
  • 一个人,她孤独的活在一座城市,还有一个人,他也孤独的活在一座城市里。直到有一天他和她在这座城市里遇见了,从此,他们...
    并非_阳光阅读 179评论 0 1