Flutter 滚动改变透明度

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:ui';


class HomeNavigationBar extends StatefulWidget {
HomeNavigationBar({ this.sctrollController }) : super();
ScrollController sctrollController = new ScrollController();

@override
_HomeNavigationBar createState() {
return _HomeNavigationBar();
}
}

class _HomeNavigationBar extends State<HomeNavigationBar> {
final double _statusBarHeight = MediaQueryData.fromWindow(window).padding.top;
// 滚动视图
ScrollController _sctrollController = new ScrollController();
double _opacity = 0;

@override
void initState() {
// TODO: implement initState
super.initState();
setState(() {
_sctrollController = widget.sctrollController;
_sctrollController.addListener(() {
double scrollProportion = _sctrollController.offset / (400 - _statusBarHeight - 44);
if (scrollProportion > 1) {
scrollProportion = 1;
}else if (scrollProportion < 0) {
scrollProportion = 0;
}
setState(() {
_opacity = scrollProportion;
});
});
});
}

@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
final width = size.width;

return new Opacity(
opacity: _opacity,
child: Container(
width: width,
height: _statusBarHeight + 44,
color: Colors.white,
),
);
}
}
posted @ 2020-08-17 16:14  D-Ben  阅读(621)  评论(0编辑  收藏  举报