import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:zhiying_base_widget/pages/main_page/notifier/main_page_bg_notifier.dart'; class MineHeaderBgWidget extends StatefulWidget { final ScrollController controller; const MineHeaderBgWidget({Key key, this.controller}) : super(key: key); @override _MineHeaderBgWidgetState createState() => _MineHeaderBgWidgetState(); } class _MineHeaderBgWidgetState extends State { int zIndex = 0; double _offsetY = 0; double _height = 300; _MineHeaderBgContainer _content; @override void initState() { super.initState(); _content = _MineHeaderBgContainer(); if (widget.controller != null) { widget.controller.addListener(() { if (widget.controller.offset > _height) { // 减少重绘 return; } _offsetY = -widget.controller.offset; if (_offsetY > 0) { _offsetY = 0; } setState(() {}); }); } } @override void dispose() { super.dispose(); } @override void didChangeDependencies() { super.didChangeDependencies(); print('didChangeDependencies'); // if (isNeedLoadMore && _provider != '') { // print('HomeGoods loadmore...'); // _bloc.loadMore(_provider); } @override Widget build(BuildContext context) { print('mine_header_bg_widget build ${_offsetY.toString()}'); return Transform.translate( offset: Offset(0, _offsetY), child: _content, ); } // @override // Widget build(BuildContext context) { // return Container( // height: 300, // width: double.infinity, // child: Stack( // children: imageUrls // .asMap() // .keys // .map((i) => AnimatedOpacity( // curve: Curves.easeIn, // duration: Duration(milliseconds: 1600), // opacity: i == zIndex ? 1 : 0, // child: Container( //// color: Color(int.parse(list[i], radix: 16)) //// .withAlpha(255), // child: CachedNetworkImage( // imageUrl: imageUrls[i], // fit: BoxFit.fill, // ), // height: 300, //100% // ), // )) // .toList(), // )); // } } class _MineHeaderBgContainer extends StatefulWidget { @override _MineHeaderBgContainerState createState() => _MineHeaderBgContainerState(); } class _MineHeaderBgContainerState extends State<_MineHeaderBgContainer> { @override Widget build(BuildContext context) { print('_MineHeaderBgContainerState build'); return Consumer(builder: (context, model, widget) { return Stack( fit: StackFit.passthrough, overflow: Overflow.clip, children: [ model.toWidget ?? Container(), ], ); }); } }