当前位置: 首页 > news >正文

初学Flutter,实现底部导航切换

效果展示

flutter bottomNavBar

主要实现代码

入口文件:main.dart

import 'package:flutter/material.dart';
import 'package:flutter_demo/components/bottomNavBar.dart';
import 'package:flutter_demo/views/cart.dart';
import 'package:flutter_demo/views/cata.dart';
import 'package:flutter_demo/views/person.dart';
import 'package:flutter_demo/views/home.dart';main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(// title: 'UzumakiHan',theme: ThemeData(// Define the default brightness and colors.brightness: Brightness.light,primaryColor: Colors.lightBlue[800],),home: const MyHome());}
}class MyHome extends StatefulWidget {const MyHome({super.key});@override// ignore: library_private_types_in_public_api_MyHomeState createState() => _MyHomeState();
}class _MyHomeState extends State<MyHome> {List tabBodies = [const IndexHome(),const Cata(),const Cart(),const Person()];int currentIndex = 0;List<BottomNavigationBarItem> bottomTabs = [const BottomNavigationBarItem(icon: Icon(Icons.home), label: '首页'),const BottomNavigationBarItem(icon: Icon(Icons.search), label: '分类'),const BottomNavigationBarItem(icon: Icon(Icons.shopping_cart), label: '购物车'),const BottomNavigationBarItem(icon: Icon(Icons.manage_accounts), label: '个人中心'),];List<String> pageTitle = ['首页', '分类', '购物车', '个人中心'];@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(pageTitle[currentIndex]),centerTitle: true,),body: tabBodies[currentIndex],bottomNavigationBar: BottomNavBar(bottomTabs: bottomTabs,currentIndex: currentIndex,changeCurrentIndex: (index) {setState(() {currentIndex = index;});},));}
}

底部导航组件 bottomNavBar.dart

// ignore_for_file: library_private_types_in_public_apiimport 'package:flutter/material.dart';
class BottomNavBar extends StatefulWidget {const BottomNavBar({super.key,required this.bottomTabs,required this.currentIndex,required this.changeCurrentIndex});final List<BottomNavigationBarItem> bottomTabs;final int currentIndex;final Function changeCurrentIndex;@override_BootomNavBarState createState() => _BootomNavBarState();
}class _BootomNavBarState extends State<BottomNavBar> {int currentIndex = 0;@overrideWidget build(BuildContext context) {return BottomNavigationBar(type: BottomNavigationBarType.fixed,currentIndex: widget.currentIndex,items: widget.bottomTabs,onTap: (index) {widget.changeCurrentIndex(index);});}
}

下面是四个导航对应的页面

首页:home.dart

// ignore_for_file: library_private_types_in_public_apiimport 'package:flutter/material.dart';class IndexHome extends StatefulWidget {const IndexHome({super.key});@override_IndexHomeState createState() => _IndexHomeState();
}class _IndexHomeState extends State<IndexHome> {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn const Center(child: Text('首页',style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),));}
}

分类:cata.dart

// ignore_for_file: library_private_types_in_public_apiimport 'package:flutter/material.dart';class Cata extends StatefulWidget {const Cata({super.key});@override_CataState createState() => _CataState();
}class _CataState extends State<Cata> {@overrideWidget build(BuildContext context) {return const Center(child: Text("分类",style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)),);}
}

购物车:cart.dart

// ignore_for_file: library_private_types_in_public_apiimport 'package:flutter/material.dart';class Cart extends StatefulWidget {const Cart({super.key});@override_CartState createState() => _CartState();
}class _CartState extends State<Cart> {@overrideWidget build(BuildContext context) {return const Center(child: Text("购物车",style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)),);}
}

个人中心:person.dart

// ignore_for_file: library_private_types_in_public_apiimport 'package:flutter/material.dart';class IndexHome extends StatefulWidget {const IndexHome({super.key});@override_IndexHomeState createState() => _IndexHomeState();
}class _IndexHomeState extends State<IndexHome> {@overrideWidget build(BuildContext context) {// TODO: implement buildreturn const Center(child: Text('首页',style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),));}
}

相关文章:

初学Flutter,实现底部导航切换

效果展示 flutter bottomNavBar 主要实现代码 入口文件&#xff1a;main.dart import package:flutter/material.dart; import package:flutter_demo/components/bottomNavBar.dart; import package:flutter_demo/views/cart.dart; import package:flutter_demo/views/cata.d…...

使用JMeter进行接口压力测试

1.我首先创建一个线程组 2.创建好之后如图所示 3. 进行配置 4. 然后添加一个https请求 5.创建好之后设置请求方法和对应参数 6.设置表格监听器 7.创建好之后如图所示 8.保存jmx文件后点击运行进行测试&#xff0c;结果反馈如下图...

ElasticSearch集群架构实战及其原理剖析

ES集群架构 为什么要使用ES集群架构 分布式系统的可用性与扩展性&#xff1a; 高可用性 服务可用性&#xff1a;允许有节点停止服务&#xff1b;数据可用性&#xff1a;部分节点丢失&#xff0c;不会丢失数据&#xff1b; 可扩展性 请求量提升/数据的不断增长(将数据分布…...

选择适合你的办公桌:提高工作效率的关键

​在如今的数字时代&#xff0c;越来越多的人将办公桌移到家里或办公室。但是&#xff0c;如何选择适合你的办公桌可能是个挑战。不同的工作需要和工作空间大小会影响你的选择。下面是一些简单的建议&#xff0c;帮助你找到适合你的办公桌&#xff0c;提高工作效率。 首先&…...

机器学习之多层感知机 MLP简洁实现 《动手深度学习》实例

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…...

使用C#在Windows上调用7-zip压缩文件

使用C#在Windows上调用7-zip压缩文件 可以设置输出文件的路径也可以留空&#xff0c;留空则会在压缩文件创建一个同名的.压缩包 可以设置压缩包的密码 可以设置压缩包的加密方式(ASE-256),可以使用LZMA但是加密码会报错 可以设置压缩包的格式(zip)&#xff0c;可以使用7z但是加…...

京东数据平台:2023年Q3季度黄金市场数据分析

继9月国内黄金市场持续上涨后&#xff0c;进入10月中下旬后&#xff0c;黄金行情再度反转&#xff0c;多家品牌金饰价格再次突破600元/克&#xff0c;达到611元/克。 今年以来&#xff0c;黄金行情不断走俏&#xff0c;销售市场也有明显增长。根据鲸参谋平台的数据显示&#xf…...

https原理

首先说一下几个概念&#xff1a;对称加密、非对称加密 对称加密&#xff1a; 客户端和服务端使用同一个秘钥&#xff0c;分两种情况&#xff1a; 1、所有的客户端和服务端使用同一个秘钥&#xff0c;这个秘钥被泄漏后数据不再安全 2、每个客户端生成一个秘钥&…...

FFmpeg直播能力更新计划与新版本发布

// 编者按&#xff1a;客户端作为直接面向用户大众的接口&#xff0c;随着技术的发展进化与时俱进&#xff0c;实现更好的服务是十分必要的。FFmpeg作为最受欢迎的视频和图像处理开源软件&#xff0c;被相关行业的大量用户青睐&#xff0c;而随着HEVC标准的发布到广泛使用&am…...

面试算法55:二叉搜索树迭代器

题目 请实现二叉搜索树的迭代器BSTIterator&#xff0c;它主要有如下3个函数。 构造函数&#xff1a;输入二叉搜索树的根节点初始化该迭代器。函数next&#xff1a;返回二叉搜索树中下一个最小的节点的值。函数hasNext&#xff1a;返回二叉搜索树是否还有下一个节点。 分析 …...

Linux Crontab 定时任务

crond 服务 Linux 通过 crond 服务来支持 crontab。 查看 crond 服务是否已经安装 输入下面命令确认 crond 服务是否已安装。 systemctl list-unit-files | grep crond 如果为 enabled&#xff0c;表示服务正运行。 crontab 文件 crontab 要执行的定时任务都被保存在 /etc…...

HiveSQL高级进阶技巧

目录 1.删除2.更新&#xff1a;3.行转列&#xff1a;4.列转行&#xff1a;5.分析函数&#xff1a;6.多维分析7.数据倾斜groupby&#xff1a;join&#xff1a; 掌握下面的技巧&#xff0c;你的SQL水平将有一个质的提升&#xff01; 1.删除 正常hive删除操作基本都是覆盖原数据&…...

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用

【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用 文章目录 一、前言二、AnimationController 简介三、AnimationController 的主要功能四、Ticker 提供者五、AnimationController 的生命周期六、与 AnimationController 一起使用的 Future七、实际业务…...

安装富文本组件

安装vue-ueditor-wrap3.x&#xff1a; vue-ueditor-wrap3.x&#xff1a;一个“包装”了 UEditor 的 Vue 组件&#xff0c;支持通过 v-model 来绑定富文本编辑器的内容&#xff0c;让 UEditor 的使用简单到像 Input 框一样。省去了初始化 UEditor、手动调用 getContent&#xff…...

Tomcat下载地址(详细)

Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi2.找到Archives 3.选择下载的把版本 4.选择具体下载那个版本 5. 6.一般选择tar.gz结尾的压缩包...

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统

领星ERP&#xff08;LINGXING&#xff09;是一款专业的一站式亚马逊管理系统&#xff0c;帮助卖家构建完整的数据化运营闭环。&#xff0c;致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网&#xff1a;https://erp.lingxing.com 集简云无代码集成平台&…...

Django实战项目-学习任务系统-自定义URL拦截器

接着上期代码框架&#xff0c;6个主要功能基本实现&#xff0c;剩下的就是细节点的完善优化了。 首先增加URL拦截器&#xff0c;你不会希望没有登录用户就可以进入用户主页各种功能的&#xff0c;所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器&#xff0…...

[已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。

问题 调整hvie 的参数后导致该主机与 Cloudera Manager Server 失去联系的时间过长 思路 主机离家出走了&#xff01; 出现问题后立马参数修改回来&#xff1b; 但是还是发现有这样的报错&#xff1a; 网上百度&#xff0c;各种操作&#xff0c;大概总结为2点&#xff1a…...

通过在Z平面放置零极点的来设计数字滤波器

文章来源地址&#xff1a;https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求&#xff1a;设计一款高通滤波器&#xff0c;用在音频信号处理过程中&#xff0c;滤掉100Hz以下的信号。 实现方法&#xff1a;通过在Z平面放置零极点的来设…...

linux环境docker部署nginx对生产日志按日切割并压缩处理

linux环境docker部署nginx对生产日志按日切割并压缩处理 1、脚本文件 # 创建脚本文件 mkdir log_slice_task.sh # 编辑脚本文件 vim log_slice_task.sh#! /bin/bash # 定时切割日志脚本 LOG_ACCESS_FILE"/日志文件路径/access.log" LOG_FAIL_FILE"/日志文件路…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...