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 Widget build(BuildContext context) { return Transform.translate( offset: Offset(0, _offsetY), child: _content, ); } } 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(), ], ); }); } }