Flutter底部导航栏的实现方式
作者:codekxx 发布时间:2023-11-05 18:21:36
标签:Flutter,导航栏
本文实例为大家分享了Flutter底部导航栏的实现代码,供大家参考,具体内容如下
老规格,先看图:
程序主结构如下:
1.在程序主入口文件main.dart添加如下代码
import 'package:flutter/material.dart';
import 'bottom_navigation.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData.light(),
home: BottomNavigationWidget(),
);
}
}
2.创建4个界面,home_page.dart、constant_page.dart、find_page.dart、my_page.dart
home_page.dart
import 'package:flutter/material.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('HomePage'),),
body: Center(
child: Text('这是首页'),
),
);
}
}
constant_page.dart
import 'package:flutter/material.dart';
class ConstantPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('ConstantPage'),),
body: Center(
child: Text('这是联系人'),
),
);
}
}
find_page.dart
import 'package:flutter/material.dart';
class FindPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('FindPage'),),
body: Center(
child: Text('这是发现'),
),
);
}
}
my_page.dart
import 'package:flutter/material.dart';
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('MyPage'),),
body: Center(
child: Text('这是我的'),
),
);
}
}
3.创建动态组件BottomNavigationWidget,新建bottom_navigation.dart
import 'package:flutter/material.dart';
import 'pages/home_page.dart';
import 'pages/constant_page.dart';
import 'pages/find_page.dart';
import 'pages/my_page.dart';
class BottomNavigationWidget extends StatefulWidget {
@override
_BottomNavigationWidgetState createState() => new _BottomNavigationWidgetState();
}
class _BottomNavigationWidgetState extends State<BottomNavigationWidget> {
final List<Widget> list = List();
int _currentIndex = 0;
@override
void initState() {
list
..add(HomePage())
..add(ConstantPage())
..add(FindPage())
..add(MyPage());
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: list[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
currentIndex: _currentIndex,
onTap: (int index){
setState(() {
_currentIndex = index;
});
},
type: BottomNavigationBarType.fixed,
items: [
BottomNavigationBarItem(
icon: Icon(Icons.home,color: Colors.blue,),
title: Text('首页',style: TextStyle(color: Colors.blue))
),
BottomNavigationBarItem(
icon: Icon(Icons.contacts,color: Colors.blue,),
title: Text('联系',style: TextStyle(color: Colors.blue))
),
BottomNavigationBarItem(
icon: Icon(Icons.find_in_page,color: Colors.blue,),
title: Text('发现',style: TextStyle(color: Colors.blue))
),
BottomNavigationBarItem(
icon: Icon(Icons.menu,color: Colors.blue,),
title: Text('我的',style: TextStyle(color: Colors.blue))
),
]
),
);
}
}
来源:https://blog.csdn.net/codekxx/article/details/86528077


猜你喜欢
- 前言我通常是不太关心代码的具体实现的,因为我的开发语言很杂,倾向于一些最简单通用的方式去解决。今儿不小心在群里看到一位朋友发了下面的java
- 前言接着上一篇:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 上仓库地址:GitHub仓库查询定义查询请求体pac
- 前言 Android自带的组件比较丑陋(个人感觉),自己写组件比较复杂,而且必须
- 今天做了一个java对象转Map的例子,执行的时候报错了,如下:Exception in thread "main" j
- 利用属性动画实现优酷菜单,供大家参考,具体内容如下布局文件<RelativeLayout xmlns:android="ht
- 目录什么是树形结构数据效果用法源码总结什么是树形结构数据效果用法String jsonStr = "{\"name\&q
- 使用通配符增强泛型1.题目泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高。实现:在泛型方法中使用通配符2.解题思路创建一个类:
- 本文实例讲述了C#读取csv格式文件的方法。分享给大家供大家参考。具体实现方法如下:一、CSV文件规则 1 开头是不留空,以行为单
- 最近做一个C#项目,需要对radis进行读写。首先引入System.Configuration,如下实现代码如下:public class
- 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找开始正文1、先介绍本文会用到的window
- 说明一下性能方面 还可以接受 循环1000次普通Switch是用了0.001秒 ,扩展函数为0.002秒 , 如果是大项目在有负
- 方法1:import java.net.HttpURLConnection;import java.net.URL;import org.j
- 单一职责原则:一个类,只有一个引起它变化的原因。为什么需要单一职责原则?如果一个类有多个原因要去修改它,那么修改一个功能时,可能会让其他功能
- 本文实例为大家分享了Java实现统计字符串出现次数的具体代码,供大家参考,具体内容如下需求:健盘录入一个字符串,要求统计字符串中每个字符串出
- AOP拦截Controller获取@PathVariable注解传入参数前言:最近项目中需要对controller传入的应用标识(appMa
- Task的MSDN的描述如下:【Task类的表示单个操作不会返回一个值,通常以异步方式执行。Task对象是一种的中心思想基于任务的异步模式首
- 我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就
- 一、SpringBoot是什么Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以
- Android 帧动画的实例详解对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,
- @[toc]在之前的文章中松哥和小伙伴们聊过,正在执行的流程信息是保存在以 ACT_RU_ 为前缀的表中,执行完毕的流程