flutter 底部滑动导航,页面滑动同时让底部导航跟着变动,除了点击还可以滑动哦~~

2024-03-13 14:18

本文主要是介绍flutter 底部滑动导航,页面滑动同时让底部导航跟着变动,除了点击还可以滑动哦~~,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现点击以及滑动都可以切换导航的效果

核心代码


完整代码

// 输入 imrm 快速生成下面
import 'package:flutter/material.dart';
import 'Home.dart';
import 'HomeNew.dart';
import 'Category.dart';
import 'User.dart';
import 'Cart.dart';class Tabs extends StatefulWidget {const Tabs({Key? key, arguments}) : super(key: key);@override_TabsState createState() => _TabsState();
}class _TabsState extends State<Tabs> {int _currentIndex = 0;late PageController _pageController; // 缓存页面重要代码@overridevoid initState() {super.initState();this._pageController =new PageController(initialPage: this._currentIndex); // 缓存页面重要代码}Widget _initPng() {return Image.asset('assets/images/tdd2.png',height: 25.0,);}static const Color myPink = Color(0xFFdf769e);var _title;List<Widget> _pageList = [HomeNewPage(),HomePage(),CategoryPage(),CartPage(),UserPage()];void _pageChange(int index) {setState(() {_currentIndex = index;});}@overrideWidget build(BuildContext context) {// _title = _initPng();return Scaffold(//这里设置总体背景色backgroundColor: Colors.white,appBar: AppBar(elevation: 0, //隐藏底部阴影分割线centerTitle: true, //标题是否居中 安卓上有效ios默认居中backgroundColor: Colors.white, //设置导航背景颜色title: _title,),// title: Text('我是title')),// body: Text('页码下标' + this._currentIndex.toString()),// body: this._pageList[this._currentIndex],body: PageView(onPageChanged: _pageChange,controller: this._pageController, // 缓存页面重要代码children: this._pageList,),bottomNavigationBar: BottomNavigationBar(items: [BottomNavigationBarItem(icon: Icon(Icons.home), label: '首页'),BottomNavigationBarItem(icon: Icon(Icons.home), label: '测试'),BottomNavigationBarItem(icon: Icon(Icons.category), label: '分类'),BottomNavigationBarItem(icon: Icon(Icons.shopping_cart), label: '购物车'),BottomNavigationBarItem(icon: Icon(Icons.people), label: '个人中心'),],currentIndex: _currentIndex,onTap: (index) {setState(() {this._currentIndex = index;this._pageController.jumpToPage(index); // 缓存页面重要代码switch (index) {case 0:{print('case01');_title = Image.asset('assets/images/tdd2.png',height: 25.0,);}break;case 1:{_title = Text("测试页面",style: TextStyle(color: myPink,fontSize: 17,letterSpacing: 1,wordSpacing: 2,height: 1.2,fontWeight: FontWeight.w600),);}break;case 2:{_title = Text("分类",style: TextStyle(color: myPink,fontSize: 17,letterSpacing: 1,wordSpacing: 2,height: 1.2,fontWeight: FontWeight.w600),);}break;case 3:{_title = Text("购物车",style: TextStyle(color: myPink,fontSize: 17,letterSpacing: 1,wordSpacing: 2,height: 1.2,fontWeight: FontWeight.w600),);}break;case 4:{_title = Text("个人中心",style: TextStyle(color: myPink,fontSize: 17,letterSpacing: 1,wordSpacing: 2,height: 1.2,fontWeight: FontWeight.w600),);}break;}});},type: BottomNavigationBarType.fixed,fixedColor: myPink,),);}
}

在这里插入图片描述

这篇关于flutter 底部滑动导航,页面滑动同时让底部导航跟着变动,除了点击还可以滑动哦~~的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805148

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。         基本的按钮特点:         1.按下时都会有“水波文动画”。         2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

ViewPager+fragment实现切换页面(一)

如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。 思路 首先肯定是会用到viewpager这个控件,为了能够向下兼容,最好用v4包下的viewpager,Activity要继承FragmentActivity 其次用一个集合来存储所有的fragment页面在设置viewpager的适配器时,把存储fragment页面的list集合传入ada