基础组件库
 
 
 
 
 

112 rindas
3.0 KiB

  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import 'package:zhiying_base_widget/pages/main_page/notifier/main_page_bg_notifier.dart';
  4. class MineHeaderBgWidget extends StatefulWidget {
  5. final ScrollController controller;
  6. const MineHeaderBgWidget({Key key, this.controller}) : super(key: key);
  7. @override
  8. _MineHeaderBgWidgetState createState() => _MineHeaderBgWidgetState();
  9. }
  10. class _MineHeaderBgWidgetState extends State<MineHeaderBgWidget> {
  11. int zIndex = 0;
  12. double _offsetY = 0;
  13. double _height = 300;
  14. _MineHeaderBgContainer _content;
  15. @override
  16. void initState() {
  17. super.initState();
  18. _content = _MineHeaderBgContainer();
  19. if (widget.controller != null) {
  20. widget.controller.addListener(() {
  21. if (widget.controller.offset > _height) {
  22. // 减少重绘
  23. return;
  24. }
  25. _offsetY = -widget.controller.offset;
  26. if (_offsetY > 0) {
  27. _offsetY = 0;
  28. }
  29. setState(() {});
  30. });
  31. }
  32. }
  33. @override
  34. void dispose() {
  35. super.dispose();
  36. }
  37. @override
  38. void didChangeDependencies() {
  39. super.didChangeDependencies();
  40. print('didChangeDependencies');
  41. // if (isNeedLoadMore && _provider != '') {
  42. // print('HomeGoods loadmore...');
  43. // _bloc.loadMore(_provider);
  44. }
  45. @override
  46. Widget build(BuildContext context) {
  47. print('mmine_hider_bg_widget build');
  48. return Transform.translate(
  49. offset: Offset(0, _offsetY),
  50. child: _content,
  51. );
  52. }
  53. // @override
  54. // Widget build(BuildContext context) {
  55. // return Container(
  56. // height: 300,
  57. // width: double.infinity,
  58. // child: Stack(
  59. // children: imageUrls
  60. // .asMap()
  61. // .keys
  62. // .map<Widget>((i) => AnimatedOpacity(
  63. // curve: Curves.easeIn,
  64. // duration: Duration(milliseconds: 1600),
  65. // opacity: i == zIndex ? 1 : 0,
  66. // child: Container(
  67. //// color: Color(int.parse(list[i], radix: 16))
  68. //// .withAlpha(255),
  69. // child: CachedNetworkImage(
  70. // imageUrl: imageUrls[i],
  71. // fit: BoxFit.fill,
  72. // ),
  73. // height: 300, //100%
  74. // ),
  75. // ))
  76. // .toList(),
  77. // ));
  78. // }
  79. }
  80. class _MineHeaderBgContainer extends StatefulWidget {
  81. @override
  82. _MineHeaderBgContainerState createState() => _MineHeaderBgContainerState();
  83. }
  84. class _MineHeaderBgContainerState extends State<_MineHeaderBgContainer> {
  85. @override
  86. Widget build(BuildContext context) {
  87. print('_MineHeaderBgContainerState build');
  88. return Consumer<MainPageBgNotifier>(builder: (context, model, widget) {
  89. return Stack(
  90. fit: StackFit.passthrough,
  91. overflow: Overflow.clip,
  92. children: <Widget>[
  93. model.toWidget ?? Container(),
  94. ],
  95. );
  96. });
  97. }
  98. }