zoukankan      html  css  js  c++  java
  • Flutter-底部導航欄切換

    程序入口

    import 'package:flutter/material.dart';
    import 'botton_navigation_widget.dart';
    
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'demo',
          theme:ThemeData.light(),
          home: BottomNavigationWidget()//導航Widget
        );
      }
    }

    導航widget

    import 'package:flutter/material.dart';
    import 'index.dart';
    import 'campus_network.dart';
    import 'curriculum.dart';
    import 'personal_center.dart';
    
    class BottomNavigationWidget extends StatefulWidget {
      @override
      _BottomNavigationWidgetState createState() => _BottomNavigationWidgetState();
    }
    
    class _BottomNavigationWidgetState extends State<BottomNavigationWidget> {
      final _BottomNavigationColor = Colors.blue;
      //現在的索引
      int _currentIndex = 0;
      //widget集合
      List<Widget> list = List();
      //重寫初始化方法,將需要導航的widget添加到集合
      @override
      void initState() {
        list
          //..相當於list.
          ..add(IndexScreen())
          ..add(CurriculumScreen())
          ..add(CampusNetworkScreen())
          ..add(PersonalCenterScreen());
        super.initState();
      }
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: list[_currentIndex],
          bottomNavigationBar: BottomNavigationBar(
            //超過3個不顯示名字,需要設置
            type: BottomNavigationBarType.fixed,
            items: [
              BottomNavigationBarItem(
                icon: Icon(
                  Icons.crop_3_2,
                  color:_BottomNavigationColor,
                ),
                title: Text(
                  '首頁'
                ),
              ),
              BottomNavigationBarItem(
                icon: Icon(
                  Icons.crop_3_2,
                  color:_BottomNavigationColor,
                ),
                title: Text(
                    '課程'
                ),
              ),
              BottomNavigationBarItem(
                icon: Icon(
                  Icons.crop_3_2,
                  color:_BottomNavigationColor,
                ),
                title: Text(
                    '分校網絡'
                ),
              ),
              BottomNavigationBarItem(
                icon: Icon(
                  Icons.crop_3_2,
                  color:_BottomNavigationColor,
                ),
                title: Text(
                    '個人中心'
                ),
              ),
            ],
            //高亮顯示
            currentIndex: _currentIndex,
            //點擊導航時更新現在的下標
            onTap: (int index){
              setState(() {
                _currentIndex = index;
              });
            },
          ),
        );
      }
    }

    需要跳轉的widget

    import 'package:flutter/material.dart';
    
    class IndexScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('index'),
          ),
          body: Center(
            child: Text('index'),
          ),
        );
      }
    }
  • 相关阅读:
    ui自动化-则神第一天04-学习方法
    PHP unserialize()
    路径中 斜杠/和反斜杠 的区别
    PhpStorm 克隆下来的项目改动,版本控制不起效果
    PhpStorm 回到上次编辑位置的快捷键
    mysql max_allowed_packet查询和修改
    PHP大批量插入数据库的3种方法和速度对比
    mysql5.7.23安装详细过程
    JS 放大镜
    aviary 图片编辑器
  • 原文地址:https://www.cnblogs.com/ssjf/p/11771752.html
Copyright © 2011-2022 走看看