Flutter:AnimatedContainer实现导航侧边栏

devtools/2024/11/26 5:10:56/

导航侧边栏

import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}):super(key: key);@overrideWidget build(BuildContext context) {return const MaterialApp(title: 'Flutter Demo',home: MyHomePage(),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({Key? key}):super(key: key);@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {bool flag = true;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('标题'),),body: Stack(children: [ListView(children: [Container(width: 300,height: 100,color: Colors.blue,child: Text('我是页面里的内容1'),),Container(width: 300,height: 100,color: Colors.red,child: Text('我是页面里的内容2'),),],),Positioned(left: 0,top: 0,bottom: 0,child: AnimatedContainer(width: 200, // 更改宽度height: double.infinity, // 高度无限大color: Color.fromRGBO(256, 256, 256, .8),duration: const Duration(milliseconds: 300), // 动画时长// Matrix4.translationValues(x,y,z) 位置偏移transform:flag ? Matrix4.translationValues(-200, 0, 0):Matrix4.translationValues(0, 0, 0),child: const Column(children: [Text('导航1',style: TextStyle(color: Colors.white),),Text('导航2',style: TextStyle(color: Colors.white),),Text('导航3',style: TextStyle(color: Colors.white),),],),),),],),floatingActionButton: FloatingActionButton(onPressed: (){flag = !flag;setState(() {});},child: const Icon(Icons.add),),);}
}

在这里插入图片描述

如果想让侧边栏把标题盖上需要将Stack包裹Scaffold

class _MyHomePageState extends State<MyHomePage> {bool flag = true;@overrideWidget build(BuildContext context) {return Stack(children: [Scaffold(appBar: AppBar(title: const Text('标题'),),body: Stack(children: [ListView(children: [Container(width: 300,height: 100,color: Colors.blue,child: Text('我是页面里的内容1'),),Container(width: 300,height: 100,color: Colors.red,child: Text('我是页面里的内容2'),),],),],),floatingActionButton: FloatingActionButton(onPressed: (){flag = !flag;setState(() {});},child: const Icon(Icons.add),),),Positioned(left: 0,top: 0,bottom: 0,child: AnimatedContainer(width: 200, // 更改宽度height: double.infinity, // 高度无限大color: Color.fromRGBO(256, 256, 256, .8),duration: const Duration(milliseconds: 300), // 动画时长// Matrix4.translationValues(x,y,z) 位置偏移transform:flag ? Matrix4.translationValues(-200, 0, 0):Matrix4.translationValues(0, 0, 0),child: const Column(children: [Text('导航1',style: TextStyle(color: Colors.white),),Text('导航2',style: TextStyle(color: Colors.white),),Text('导航3',style: TextStyle(color: Colors.white),),],),),),],);}
}

在这里插入图片描述


http://www.ppmy.cn/devtools/137031.html

相关文章

提升工作效率的好用的IDEA插件

主题/外观 Dracula Theme&#xff1a;主题 Vuesion Theme&#xff1a;主题 Atom Material ICons&#xff1a;ICON主题 Rainbow Brackets&#xff1a;括号着色&#xff0c;提升可读性 Nyan progress bar&#xff1a;把你的加载进度条全都变成彩虹和猫咪 Activate-power-mod…

7 设计模式原则之合成复用原则

一、什么是合成复用原则&#xff1f; 1.定义&#xff1a; 要尽量使用对象组合&#xff08;组合关系&#xff09;来实现代码复用&#xff0c;而不是通过类继承&#xff08;继承关系&#xff09;来实现。 2.继承 vs. 组合 继承是一种“强耦合”的关系&#xff0c;子类会受父类的…

USRP:B205mini-i

USRP B205mini-i B205mini-i都是采用工业级的FPGA芯片(-I表示industrial-grade)&#xff0c;所以价格贵。 这个工业级会让工作温度从原来 0 – 45 C 变为 -40 – 75 C. 温度的扩宽&#xff0c;会让工作的稳定性变好。但是前提是你需要配合NI的外壳才行&#xff0c;你如果只买一…

修复HIve表乱码问题

修改数据库编码 # 修改已存在的hive元数据库&#xff0c;字符编码格式为utf8mb4 mysql> alter database hive character set utf8mb4; # 进入hive元数据库 mysql> use hive;# 查看元数据库字符编码格式 mysql> show variables like character_set_database; 修改…

c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除

老规矩&#xff0c;点赞评论收藏关注&#xff01;&#xff01;&#xff01; 目录 线性表 其特点是&#xff1a; 算法实现&#xff1a; 运行结果展示 链表 插入元素&#xff1a; 删除元素&#xff1a; 算法实现 运行结果 线性表是由n个数据元素组成的有限序列&#xff…

[Golang]传递一个切片(slice)和使用变参(...)语法传递多个参数之间的区别

在 Go 中&#xff0c;传递一个切片&#xff08;slice&#xff09;和使用变参&#xff08;…&#xff09;语法传递多个参数之间有一些关键区别。让我们详细讨论这两种方式之间的区别&#xff1a; 传递切片&#xff08;Slice&#xff09; 传递方式&#xff1a; 传递切片时&…

nodejs基于微信小程序的云校园的设计与实现

摘 要 相比于传统的校园管理方式&#xff0c;智能化的管理方式可以大幅提高校园的管理效率&#xff0c;实现了云校园管理的标准化、制度化、程序化的管理&#xff0c;有效地防止了云校园信息的不规范管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准确地…

C#桌面应用制作计算器进阶版02

基于C#桌面应用制作计算器进阶版01做出了少量改动&#xff0c;其主要改动为label1显示所有输入的字符和运算符&#xff1b;且当数字为正数数时&#xff0c;点击“/-”按键数字转化为负数并为其加上括号&#xff0c;再次点击数字转化为正数并去掉其括号&#xff1b;点击“Del”按…