flutter自定义左侧竖排菜单栏,直接显示在页面上,不可隐藏,点击不同菜单展示不同内容,但布局是一样的
时间: 2024-05-09 09:19:01 浏览: 158
以下是一个简单的示例代码,实现了一个左侧竖排菜单栏,点击不同菜单会改变右侧显示的内容,但布局是一样的。
```dart
import 'package:flutter/material.dart';
class CustomMenu extends StatefulWidget {
@override
_CustomMenuState createState() => _CustomMenuState();
}
class _CustomMenuState extends State<CustomMenu> {
int _selectedIndex = 0;
List<String> _menuItems = ['菜单1', '菜单2', '菜单3', '菜单4', '菜单5'];
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 100,
color: Colors.grey[200],
child: ListView.builder(
itemCount: _menuItems.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(
_menuItems[index],
style: TextStyle(
fontWeight: _selectedIndex == index
? FontWeight.bold
: FontWeight.normal,
),
),
onTap: () {
setState(() {
_selectedIndex = index;
});
},
);
},
),
),
Expanded(
child: Container(
padding: EdgeInsets.all(16),
child: Text(
'内容 ${_selectedIndex + 1}',
style: TextStyle(fontSize: 20),
),
),
),
],
);
}
}
```
在上面的示例代码中,我们使用了`Row`和`Expanded`来实现左右两个部分的布局,左侧部分使用了`Container`和`ListView.builder`来显示菜单栏,右侧部分使用了一个`Container`来显示内容。当点击菜单时,我们通过`setState`来更新`_selectedIndex`变量,从而改变右侧显示的内容。
阅读全文