美文网首页
flutter TabController 简单使用

flutter TabController 简单使用

作者: 从容到没边的优雅 | 来源:发表于2022-11-01 15:20 被阅读0次
    a.png
    
    import 'package:flu_merchant/ui/widget/custom_navbar.dart';
    import 'package:flutter/material.dart';
    
    
    class ChargeCenter extends StatefulWidget {
      const ChargeCenter({Key? key}) : super(key: key);
    
      @override
      State<ChargeCenter> createState() => _ChargeCenterState();
    }
    
    class _ChargeCenterState extends State<ChargeCenter> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: CustomNavBar(
            title: "充值中心",
          ),
          body: SingleChildScrollView(
            child: Container(
              child: Column(
                children: <Widget>[
                  Container(
                    color: Colors.green,
                    alignment: Alignment.center,
                    height: 100, 
                    child: Text('哈哈哈'),
                  ),
                  Container(
                    child: _VideoBookMusicBookWidget(),
                  ),
                  Container(
                    color: Colors.grey,
                    height: 1000,
                    alignment: Alignment.topCenter,
                    child: Text("哈哈哈"),
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
    
    
    
    
    class _VideoBookMusicBookWidget extends StatefulWidget {
      const _VideoBookMusicBookWidget({Key? key}) : super(key: key);
    
      @override
      State<_VideoBookMusicBookWidget> createState() => _VideoBookMusicBookWidgetState();
    }
    
    class _VideoBookMusicBookWidgetState extends State<_VideoBookMusicBookWidget>
        with SingleTickerProviderStateMixin {
      final List<String> tabTxt = ['影视圈', '图书', '音乐'];
      late TabController _tabController;
      late Color selectColor, unSelectedColor;
      late TextStyle selectStyle, unSelectedStyle;
      late List<Widget> tabWidgets;
      @override
      void initState() {
        // TODO: implement initState
        super.initState();
        _tabController = TabController(length: tabTxt.length, vsync: this);
      } 
      @override
      void dispose() {
        // TODO: implement dispose
        super.dispose();
        _tabController.dispose();
      }
      @override
      Widget build(BuildContext context) {
        return Container(
          height: 200.0,
          child: DefaultTabController(
            length: tabTxt.length,
            child: Column(
              children: [
                Align(
                  child: _tabbar(),
                  alignment: Alignment.centerLeft,
                ),
                _tabView()
              ],
            ),
          ),
        );
      }
      Widget _tabbar() {
        selectColor = Colors.black;
        unSelectedColor = Color.fromARGB(255, 117, 117, 117);
        selectStyle = TextStyle(fontSize: 18, color: selectColor);
        unSelectedStyle = TextStyle(fontSize: 18, color: unSelectedColor);
        tabWidgets = tabTxt.map((e) {
          return Tab(
            height: 30,
            child: Text(e, style: TextStyle(fontSize: 15, color: Colors.red),),
          );
        }).toList();
        return TabBar(
          controller: _tabController,
          tabs: tabWidgets,
          isScrollable: true,
          indicatorColor: Colors.purple,
          indicatorSize: TabBarIndicatorSize.label,
          labelColor: selectColor,
          labelStyle: selectStyle,
          unselectedLabelColor: unSelectedColor,
          unselectedLabelStyle: unSelectedStyle,
        );
      }
      Widget _tabView() {
        return Expanded(
          child: TabBarView(
            controller: _tabController,
            children: [
              _tabBarItem(Colors.orange),
              _tabBarItem(Colors.red),
              _tabBarItem(Colors.blue),
            ],
          ),
        );
      }
      _tabBarItem(Color color) {
        return Container(
          height: 100,
          color: color,
        );
      }
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:flutter TabController 简单使用

          本文链接:https://www.haomeiwen.com/subject/ejgrtdtx.html