zoukankan      html  css  js  c++  java
  • flutter tabbar创建与显示

    效果图

    main.dart

    import 'package:flutter/material.dart';
    import 'pages/index_page.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: '百姓生活+',
          home: IndexPage(),
          theme: ThemeData.light(),
        );
      }
    }
    

    indexPage.dart

    import 'package:flutter/material.dart';
    import 'home_page.dart';
    import 'category_page.dart';
    import 'cart_page.dart';
    import 'person_page.dart';
    
    class IndexPage extends StatefulWidget {
      @override
      _IndexPageState createState() => _IndexPageState();
    }
    
    class _IndexPageState extends State<IndexPage> {
      
      final List<BottomNavigationBarItem> bottomTabs = [
        BottomNavigationBarItem(
          icon: Icon(Icons.home),
          title: Text('首页')
        ),
        BottomNavigationBarItem(
          icon: Icon(Icons.category),
          title: Text('分类')
        ),
         BottomNavigationBarItem(
          icon: Icon(Icons.shopping_cart),
          title: Text('购物车')
        ),
        BottomNavigationBarItem(
          icon: Icon(Icons.person),
          title: Text('我的')
        )
      ];
    
      final List tabBodies = [
        HomePage(),
        CategoryPage(),
        CartPage(),
        PersonPage()
      ];
    
      int currentIndex = 0;
    
      var currentPage;
    
      void initState(){
        currentPage = tabBodies[currentIndex];
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: currentPage,
          bottomNavigationBar: BottomNavigationBar(
            type: BottomNavigationBarType.fixed,
            currentIndex: currentIndex,
            items: bottomTabs,
            onTap: (index){
              setState(() {
                currentIndex = index;
                currentPage = tabBodies[index];
              });
            },
          )
        );
      }
    }
    

    home_page.dart

    
    import 'package:flutter/material.dart';
    
    class HomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title:  Text('HomePage')),
        );
      }
    }
    

    category_page.dart

    
    import 'package:flutter/material.dart';
    
    class CategoryPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title:  Text('CategoryPage')),
        );
      }
    }
    

    cart_page.dart

    
    import 'package:flutter/material.dart';
    
    class CartPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title:  Text('CartPage')),
        );
      }
    }
    

    person_page.dart

    
    import 'package:flutter/material.dart';
    
    class PersonPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title:  Text('PersonPage')),
        );
      }
    }
    
  • 相关阅读:
    UVALive-8077 Brick Walls 找规律
    UVALive-8079 Making a Team 排列组合公式化简
    UVALive-8072 Keeping On Track 树形dp 联通块之间缺失边的个数
    HDU-5534 Partial Tree 完全背包 设定初始选择
    HDU-2844 Coins 多重背包 物品数量二进制优化
    CodeForces-366C Dima and Salad 对01背包的理解 多个背包问题
    HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换
    UVALive-7197 Axles 动态规划 多个背包问题
    广义表(C++实现)
    稀疏矩阵及稀疏矩阵的压缩存储
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/11378634.html
Copyright © 2011-2022 走看看