zoukankan      html  css  js  c++  java
  • 15 Flutter BottomNavigationBar自定义底部导航条 以及实现页面切换 以及模块化

    效果:

    /**
     * Flutter  BottomNavigationBar 自定义底部导航条、以及实现页面切换:
     * BottomNavigationBar是底部导航条,可以让我们定义底部Tab切换,
     * bottomNavigationBar是Scaffold组件的参数。
     *BottomNavigationBar常见的属性:
     items  List<BottomNavigationBaritem> 底部导航条按钮集合。
     iconSize icon
     currentIndex 默认选中第几个
     onTap 选中变化回调函数
     fixedColor 选中的颜色
     type  
     BottomNavigationBarType.fixed
     BottomNavigationBarType.shifting
    */
    main.dart
    import 'package:flutter/material.dart';
    import 'pages/Tabs.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return MaterialApp(
          home: Tabs(),
        );
      }
    }

    pages/Tabs.dart

    import 'package:flutter/material.dart';
    import 'tabs/Home.dart';
    import 'tabs/Category.dart';
    import 'tabs/Setting.dart';
    class Tabs extends StatefulWidget {
      Tabs({Key key}) : super(key: key);
      _TabsState createState() => _TabsState();
    }
    
    class _TabsState extends State<Tabs> {
      int _currentIndex = 0;
      List _pageList=[
        HomePage(),
        CategoryPage(),
        SettingPage()
      ];
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Flutter Demo'),
          ),
          bottomNavigationBar: BottomNavigationBar(
              currentIndex: this._currentIndex,
              onTap: (int index) {
                // print(index);
                setState(() {
                  this._currentIndex = index;
                });
              },
              iconSize: 36.0,
              type: BottomNavigationBarType.fixed,
              fixedColor: Colors.red,
              items: [
                BottomNavigationBarItem(icon: Icon(Icons.home), title: Text('首页')),
                BottomNavigationBarItem(
                    icon: Icon(Icons.category), title: Text('分类')),
                BottomNavigationBarItem(
                    icon: Icon(Icons.settings), title: Text('设置')),
              ]),
          body: this._pageList[this._currentIndex],
        );
      }
    }

    pages/tabs/Home.dart

    import 'package:flutter/material.dart';
    
    class HomePage extends StatelessWidget {
      const HomePage({Key key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('首页'),
        );
      }
    }

    pages/tabs/Category.dart

    import 'package:flutter/material.dart';
    
    class CategoryPage extends StatelessWidget {
      const CategoryPage({Key key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('分类')
        );
      }
    }

    pages/tabs/Setting.dart

    import 'package:flutter/cupertino.dart';
    
    class SettingPage extends StatelessWidget {
      const SettingPage({Key key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('设置'),
        );
      }
    }
  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    MySQL-数据库三范式
    去除IDEA中xml黄色背景
    git查看commit提交记录详情
    spring-定时任务<task:scheduled-tasks>
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/11460342.html
Copyright © 2011-2022 走看看