flutter - 如何在颤振中添加侧边栏
问题描述
我正在尝试学习如何设计侧边栏,我在网上找到了这张图片。我已经成功开发了一个简单的侧边栏,但无法完全像这样设计。由于我是 Flutter 的新手,所以我不知道如何在点击时添加此曲线形状和动画。这是我需要你帮助的地方。
这是我到目前为止所做的:
class HomeScreen extends StatefulWidget {
const HomeScreen({Key key}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int _selectedIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Home',
style: TextStyle(color: Colors.white),
),
backgroundColor: Colors.red.withOpacity(0.3),
),
backgroundColor: Colors.red.withOpacity(0.3),
body: Row(
children: [
sideBar(),
],
),
);
}
Widget sideBar() {
final List<String> items = ['Snacks', 'Drinks', 'Food'];
return Container(
color: Colors.white,
child: Column(
children: items
.map((e) => Padding(
padding: const EdgeInsets.all(14.0),
child: GestureDetector(
onTap: () {
setState(() {
_selectedIndex = items.indexOf(e);
});
},
child: Row(
children: [
RotatedBox(quarterTurns: 3, child: Text(e)),
if (items.indexOf(e) == _selectedIndex)
const Padding(
padding: EdgeInsets.only(left: 8.0),
child: CircleAvatar(
backgroundColor: Colors.deepOrange,
radius: 5.0,
),
)
],
),
),
))
.toList(),
),
);
}
}
这是输出:
解决方案
而不是这个:
if (items.indexOf(e) == _selectedIndex)
const Padding(
padding: EdgeInsets.only(left: 8.0),
child: CircleAvatar(
backgroundColor: Colors.deepOrange,
radius: 5.0,
),
)
使用类似下面的东西。
Padding(
padding: EdgeInsets.only(left: 8.0),
child: CircleAvatar(
backgroundColor: items.indexOf(e) == _selectedIndex
? Colors.deepOrange
: Colors.transparent,
radius: 5.0,
),
)
此代码只会更改选择指示器的颜色,而不是每次添加和更改布局。
对侧边栏项目颜色执行相同操作。
RotatedBox(
quarterTurns: 3,
child: Text(
e,
style: TextStyle(
color: items.indexOf(e) == _selectedIndex
? Colors.black
: Colors.grey
),
)
),
是为你寻找吗?
推荐阅读
- sql - SQL 多语言排序规则
- python-3.x - Matplotlib 和 LaTeX
- apache-kafka - 对kafka中的每个传入数据记录执行计算
- c - 重新定义 short long 以在嵌入式 c 代码上使用代码分析工具
- android - 将数据附加到 android 10 (API 29) 中的文本文件
- android - Flutter 发布 apk 在启动时崩溃
- go - 我可以使用 Big Query 代替数据存储吗?
- javascript - 为什么导航栏切换器不适用于 vanilla js 和 css
- angular - Angular JSON Schema Form 更改模型数据不会更新表单
- symfony - 如何通过索引而不是字段名称从 Serializer (CsvEncoder) 获取值?