import 'package:ansu_ui/ansu_ui.dart';
import 'package:example/codeviewer/code_segments.dart';
import 'package:example/common/code_view.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class ExampleTabBar extends StatefulWidget {
  ExampleTabBar({Key key}) : super(key: key);

  @override
  _ExampleTabBarState createState() => _ExampleTabBarState();
}

class _ExampleTabBarState extends State<ExampleTabBar>
    with TickerProviderStateMixin {
  TabController _tabController1;
  TabController _tabController2;
  TabController _tabController3;
  TabController _tabController4;
  @override
  void initState() {
    super.initState();
    _tabController1 = TabController(length: 3, vsync: this);
    _tabController2 = TabController(length: 5, vsync: this);
    _tabController3 = TabController(length: 10, vsync: this);
    _tabController4 = TabController(length: 10, vsync: this);
  }

  @override
  void dispose() {
    _tabController1?.dispose();
    _tabController2?.dispose();
    _tabController3?.dispose();
    _tabController4?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return ASScaffold(
      title: '选项卡 TabBar',
      actions: [
        IconButton(
          icon: Icon(
            Icons.code,
            color: Colors.black54,
          ),
          onPressed: () => Get.to(
            CodeView(text: (context) => CodeSegments.tabBar(context)),
          ),
        )
      ],
      body: Material(
        color: kForegroundColor,
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            // BEGIN tabBar
            ASTabBar(
              items: ['全部', 'Part1', 'Part2'],
              controller: _tabController1,
            ),
            ASTabBar(
              items: List.generate(5, (index) => 'Tab $index'),
              controller: _tabController2,
            ),
            ASTabBar(
              isScrollable: true,
              items: List.generate(10, (index) => 'Tab $index'),
              controller: _tabController3,
            ),
            ASTabBar.tag(
              isScrollable: true,
              tabItems: List.generate(10, (index) => 'Tab $index')
                  .map((e) => ASTabBarItem(title: e, tag: e))
                  .toList(),
              controller: _tabController4,
            ),

            // END
          ],
        ),
      ),
    );
  }
}