createDefaultTabBar static method

Widget createDefaultTabBar({
  1. required int tabSize,
  2. required String onTabText(
    1. int index
    ),
  3. required ValueChanged<int> onTap,
  4. required TabController controller,
  5. TabBarIndicatorSize indicatorSize = TabBarIndicatorSize.tab,
  6. bool isScrollable = true,
})

Implementation

static Widget createDefaultTabBar({
  required int tabSize,
  required String Function(int index) onTabText,
  required ValueChanged<int> onTap,
  required TabController controller,
  TabBarIndicatorSize indicatorSize = TabBarIndicatorSize.tab,
  bool isScrollable = true,
}) {
  List<Widget> tabs = [];
  for (int i = 0; i < tabSize; i++) {
    var tab = Container(
      alignment: Alignment.center,
      margin: EdgeInsets.symmetric(vertical: 8),
      height: 56,
      child: Text(onTabText(i), style: const TextStyle(fontSize: 14)),
    );
    tabs.add(tab);
  }

  return Container(
    width: double.infinity,
    height: 56,
    decoration: BoxDecoration(
      color: Colors.white,
      boxShadow: AppStyleUtil.getDefaultBoxShadow(),
    ),
    padding: EdgeInsets.symmetric(horizontal: 16),
    child: DefaultTabController(
      length: tabSize,
      child: TabBar(
        padding: EdgeInsets.zero,
        dividerColor: Color(0xfff2f2f2),
        dividerHeight: 0,
        indicator: BoxDecoration(
          borderRadius: BorderRadius.circular(48), // 圆角
          color: AppColors.primaryColor,
        ),
        indicatorSize: TabBarIndicatorSize.tab,
        indicatorWeight: 2,
        controller: controller,
        indicatorPadding: EdgeInsets.symmetric(vertical: 10),
        isScrollable: isScrollable,
        tabAlignment: TabAlignment.start,
        tabs: tabs,
        onTap: onTap,
        labelColor: Colors.white,
        unselectedLabelColor: Color(0xff333333),
      ),
    ),
  );
}