Flutter-底部導航欄切換

Posted ssjf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(
        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‘),
      ),
    );
  }
}

 

以上是关于Flutter-底部導航欄切換的主要内容,如果未能解决你的问题,请参考以下文章

Android底部导航片段问题

使用底部导航栏防止片段刷新

将数据从底部工作表对话框片段传递到片段

Android片段底部的奇怪空白?

错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段

底部导航片段应用程序不断崩溃