import 'package:flutter/material.dart'; import 'package:zhiying_base_widget/widgets/home_goods/home_goods.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; class GoodsListCreater extends WidgetCreater { @override List createWidgets(Map model) { TabController controller = TabController(initialIndex: 0, length: 6, vsync: ScrollableState()); return [ _createHeader(controller), _createBody(controller), ]; } @override List createSkeleton(Map model) { return []; } Widget _createHeader(TabController controller) { return SliverPersistentHeader( pinned: true, floating: false, delegate: GoodsHeaderDelegate(controller), ); } Widget _createBody(TabController controller) { // return SliverToBoxAdapter( // child: Container( // width: double.infinity, // height: 200, // // child: Expanded(child: Container()), // child: TabBarView( // controller: controller, // children: [ // Icon(Icons.directions_bike, size: 128.0, color: Colors.black12), // ListView.builder( // itemCount: 20, // itemBuilder: (context, index) { // return Container( // width: double.infinity, // height: 70, // color: Colors.primaries[index % Colors.primaries.length], // ); // }), // Icon(Icons.directions_bike, size: 128.0, color: Colors.black12), // Icon(Icons.local_florist, size: 128.0, color: Colors.black12), // Icon(Icons.change_history, size: 128.0, color: Colors.black12), // Icon(Icons.directions_bike, size: 128.0, color: Colors.black12), // ], // ), // ), // ); return SliverToBoxAdapter( child: HomeGoods(), ); } @override bool isSliverChild() { return true; } } class GoodsHeaderDelegate extends SliverPersistentHeaderDelegate { final TabController controller; GoodsHeaderDelegate(this.controller); @override Widget build( BuildContext context, double shrinkOffset, bool overlapsContent) { // print(shrinkOffset.toString()); return Container( color: Colors.red, alignment: Alignment.center, child: TabBar( controller: controller, isScrollable: true, tabs: [ Tab(icon: Icon(Icons.local_florist)), Tab(icon: Icon(Icons.change_history)), Tab(icon: Icon(Icons.directions_bike)), Tab(icon: Icon(Icons.local_florist)), Tab(icon: Icon(Icons.change_history)), Tab(icon: Icon(Icons.directions_bike)), ], ), ); } @override double get maxExtent => 60.0; @override double get minExtent => 60.0; @override bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) => false; // 如果内容需要更新,设置为true }