美文网首页
Flutter(十二):BottomNavigationBar

Flutter(十二):BottomNavigationBar

作者: 林ze宏 | 来源:发表于2020-07-22 09:37 被阅读0次

    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 'tabs/Tabs.dart';
    import 'res/listData.dart';
    
    void main() {
      runApp(new MyApp());
    }
    
    // 自定义组件
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return MaterialApp(
          // Scaffold 定义导航头部和页面主要内容
          home: TabsPage(),
          theme: ThemeData(
            primarySwatch: Colors.green,
          ),
        );
      }
    }
    
    
    Tabs.dart
    
    import 'package:flutter/material.dart';
    
    import 'package:app03/pages/home/HomePage.dart';
    import 'package:app03/pages/category/CategoryPage.dart';
    import 'package:app03/pages/settings/SettingsPage.dart';
    
    class TabsPage extends StatefulWidget {
      TabsPage({Key key}) : super(key: key);
      @override
      _TabsPageState createState() => _TabsPageState();
    }
    
    class _TabsPageState extends State<TabsPage> {
      int currentIndex = 0;
      List listTabs = [
        HomePage(),
        CategoryPage(),
        SettingsPage(),
      ];
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('flutter 标题'),
          ),
          body: this.listTabs[this.currentIndex],
          bottomNavigationBar: BottomNavigationBar(
            currentIndex: this.currentIndex,
            iconSize: 30.0,
            type: BottomNavigationBarType.fixed,
            onTap: (index) {
              setState(() {
                this.currentIndex = index;
              });
            },
            items: [
              BottomNavigationBarItem(
                icon: Icon(Icons.home),
                title: Text('首页'),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.category),
                title: Text('分类'),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.settings),
                title: Text('设置'),
              ),
            ],
          ),
        );
      }
    }
    
    
    HomePage.dart
    
    import 'package:flutter/material.dart';
    
    class HomePage extends StatefulWidget {
      HomePage({Key key}) : super(key: key);
    
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('HomePage...'),
        );
      }
    }
    
    
    CategoryPage.dart
    
    import 'package:flutter/material.dart';
    
    class CategoryPage extends StatefulWidget {
      CategoryPage({Key key}) : super(key: key);
    
      @override
      _CategoryPageState createState() => _CategoryPageState();
    }
    
    class _CategoryPageState extends State<CategoryPage> {
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('Category...'),
        );
      }
    }
    
    
    SettingsPage
    import 'package:flutter/material.dart';
    
    class SettingsPage extends StatefulWidget {
      SettingsPage({Key key}) : super(key: key);
    
      @override
      _SettingsPageState createState() => _SettingsPageState();
    }
    
    class _SettingsPageState extends State<SettingsPage> {
      @override
      Widget build(BuildContext context) {
        return Container(
          child: Text('settings...'),
        );
      }
    }
    
    
    目录结构 效果

    相关文章

      网友评论

          本文标题:Flutter(十二):BottomNavigationBar

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