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')),
        );
      }
    }
    
  • 相关阅读:
    DIV+CSS 高手也得看的15个CSS常识
    dl,dt,dd标签 VS 传统table实现数据列表
    弥补Web开发缺陷实战 HTML5 中存储API
    50漂亮的后台管理界面模板
    提升你设计水平的CSS3新技术
    300+Jquery, CSS, MooTools 和 JS的导航菜单资源(总有一个适合你!)
    99款高质量免费HTML/CSS模板(看到了还行,推荐给大家)
    DIV+CSS:如何编写代码才能更有效率
    HTML5和CSS3开发工具资源汇总
    43个实例xHTML+CSS(DIV+CSS)网页及导航布局教程
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/11378634.html
Copyright © 2011-2022 走看看