Flutter可扩展折叠面板插件expansion_tile_widget的使用
Flutter可扩展折叠面板插件expansion_tile_widget的使用
CustomExpansionTileWidget
是一个经过编辑的折叠面板组件,允许你自定义头部和展开后的列表。
示例
CustomExpansionTileWidget(
headerTitle: "概述", // 主标题
headerDecoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12)), // 圆角
border: Border.all(color: Colors.blueAccent), // 边框颜色
color: Colors.yellow, // 背景颜色
),
children: [
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black), // 边框颜色
color: Colors.green, // 背景颜色
),
child: const Center(
child: Text("列表1"), // 文本内容
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black), // 边框颜色
color: Colors.red, // 背景颜色
),
child: const Center(
child: Text("列表2"), // 文本内容
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black), // 边框颜色
color: Colors.blueAccent, // 背景颜色
),
child: const Center(
child: Text("列表3"), // 文本内容
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black), // 边框颜色
color: Colors.orangeAccent, // 背景颜色
),
child: const Center(
child: Text("列表4"), // 文本内容
),
),
],
)
参数
属性名称 | 数据类型 | 描述 |
---|---|---|
headerLeading | Widget? | 在标题前显示的部件 |
headerTitle | String | 列表的主要标题 |
headerDecoration | Decoration? | 用于装饰头部的部件 |
headerPadding | EdgeInsets? | 设置头部的内边距 |
headerHeight | double? | 头部的高度,默认为50像素 |
headerTextStyle | TextStyle? | 自定义头部标题的样式 |
onExpansionChanged | ValueChanged | 当展开或收起时调用的函数 |
children | List | 当面板展开时显示的子部件 |
headerTileColor | Color? | 头部背景颜色 |
headerTrailing | Widget? | 在标题后显示的部件 |
isHeaderTrailingAnimation | bool | 是否为尾部添加动画,默认为true |
initiallyExpanded | bool | 面板是否初始展开,默认为false |
animationDuration | Duration? | 动画持续时间,默认为200毫秒 |
完整示例代码
import 'package:expansion_tile_widget/expansion_tile_widget.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(vertical: 100, horizontal: 50),
child: CustomExpansionTileWidget(
headerTitle: "概述",
headerDecoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12)),
border: Border.all(color: Colors.blueAccent),
color: Colors.yellow,
),
children: [
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
color: Colors.green,
),
child: const Center(
child: Text("列表1"),
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
color: Colors.red,
),
child: const Center(
child: Text("列表2"),
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
color: Colors.blueAccent,
),
child: const Center(
child: Text("列表3"),
),
),
Container(
height: 50,
decoration: BoxDecoration(
border: Border.all(color: Colors.black),
color: Colors.orangeAccent,
),
child: const Center(
child: Text("列表4"),
),
),
],
),
),
);
}
}
更多关于Flutter可扩展折叠面板插件expansion_tile_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter可扩展折叠面板插件expansion_tile_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用expansion_tile_widget
插件来创建一个可扩展折叠面板的示例代码。请注意,由于expansion_tile_widget
并非一个官方或广泛认知的Flutter插件,这里我将假设你想要使用Flutter的官方ExpansionTile
小部件,因为它提供了类似的功能。如果你确实在寻找一个第三方插件,请确保你已经按照其文档进行了安装和配置。
以下是使用Flutter的ExpansionTile
创建一个可扩展折叠面板的示例:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ExpansionTile Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ExpansionTile Demo'),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: ListView(
children: <Widget>[
ExpansionTile(
title: Text('Section 1'),
leading: Icon(Icons.folder),
children: <Widget>[
ListTile(
title: Text('Item 1.1'),
),
ListTile(
title: Text('Item 1.2'),
),
ListTile(
title: Text('Item 1.3'),
),
],
),
ExpansionTile(
title: Text('Section 2'),
leading: Icon(Icons.folder_open),
children: <Widget>[
ListTile(
title: Text('Item 2.1'),
),
ListTile(
title: Text('Item 2.2'),
),
],
),
],
),
),
);
}
}
在这个示例中:
- 我们创建了一个
MyApp
类,它是应用程序的入口点。 MyApp
类包含一个MaterialApp
,它设置了应用程序的主题和主页。- 主页是一个
MyHomePage
类,它包含一个Scaffold
,其中有一个AppBar
和一个填充了内容的body
。 body
部分使用ListView
来垂直排列多个ExpansionTile
。- 每个
ExpansionTile
都有一个标题、一个前导图标(leading icon),以及一个包含子项的列表。
这个示例展示了如何使用Flutter的内置ExpansionTile
来创建一个简单的可扩展折叠面板。如果你使用的是第三方插件,如expansion_tile_widget
(如果它存在的话),你需要根据该插件的文档进行相应的安装和配置,但基本的用法和概念应该是相似的。