|
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:zhiying_base_widget/pages/main_page/main_page.dart';
-
- class MinePage extends StatefulWidget {
- @override
- _MinePageState createState() => _MinePageState();
- }
-
- class _MinePageState extends State<MinePage> with TickerProviderStateMixin {
- TabController _tabController;
- Map<String, dynamic> _datas = Map();
-
- @override
- void initState() {
- _tabController = TabController(length: 3, vsync: this);
- // 模拟数据
- List<Map<String, dynamic>> list = List();
- list.add(
- Map<String, dynamic>.from({'mod_name': 'index_search', 'mod_id': 5}));
- list.add(
- Map<String, dynamic>.from({'mod_name': 'index_carousel', 'mod_id': 6}));
- list.add(Map<String, dynamic>.from({'mod_name': 'multi_nav', 'mod_id': 7}));
- list.add(Map<String, dynamic>.from(
- {'mod_name': 'index_banner_one', 'mod_id': 8}));
- list.add(Map<String, dynamic>.from(
- {'mod_name': 'index_banner_two', 'mod_id': 9}));
- list.add(Map<String, dynamic>.from(
- {'mod_name': 'index_recommend_list', 'mod_id': 10}));
- _datas['components'] = list;
- super.initState();
- }
-
- @override
- void dispose() {
- _tabController.dispose();
- super.dispose();
- }
-
- @override
- Widget build(BuildContext context) {
- List<Widget> _silverBuilder(BuildContext context, bool innerBoxIsScrolled) {
- return <Widget>[
- SliverAppBar(),
- SliverPersistentHeader(
- pinned: true,
- delegate: _SilverAppBarDelegate(
- Container(
- color: Colors.amber,
- child: TabBar(
- labelColor: Colors.blue,
- unselectedLabelColor: Colors.black,
- controller: _tabController,
- tabs: <Widget>[
- new Tab(
- text: "tab10",
- ),
- new Tab(
- text: "tab2",
- ),
- new Tab(
- text: "tab3",
- ),
- ],
- ),
- ),
- ),
- ),
- ];
- }
-
- return Scaffold(
- body: SafeArea(
- child: NestedScrollView(
- headerSliverBuilder: _silverBuilder,
- body: TabBarView(
- controller: _tabController,
- children: <Widget>[
- MainPage(_datas),
- ListView.builder(
- itemCount: 50,
- itemBuilder: (context, count) {
- return Container(
- height: 50,
- color: Colors.primaries[count % Colors.primaries.length],
- child: Text('aaaaa ${count.toString()}'),
- );
- }),
- MainPage(_datas),
- ],
- ),
- )),
- );
- }
- }
-
- class _SilverAppBarDelegate extends SliverPersistentHeaderDelegate {
- _SilverAppBarDelegate(this.child);
-
- final Widget child;
-
- @override
- double get minExtent => 44;
-
- @override
- double get maxExtent => 44;
-
- @override
- Widget build(
- BuildContext context, double shrinkOffset, bool overlapsContent) {
- return new Container(
- child: child,
- );
- }
-
- @override
- bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
- return false;
- }
- }
|