• 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('设置'),
        );
      }
    }
  • 相关阅读:
    [省选联考 2020 A 卷] 魔法商店 (保序回归)
    【CSON原创】HTML5游戏框架cnGameJS开发实录(资源加载模块篇)
    Go语言核心36讲30
    Go语言核心36讲29
    Go语言核心36讲31
    Go语言核心36讲28
    Go语言核心36讲27
    Go语言核心36讲25
    Go语言核心36讲34
    Go语言核心36讲24
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/11460342.html
Copyright © 2020-2023  润新知