v1.0.3+1expandable_widgets
一个包为 Flutter 提供了用 100% Dart 编写的可展开小部件。
适用于 Flutter 的可展开小部件
以下为英文项目原文快照,最新内容请访问 GitHub。
Expandable Widgets offers a variety of uses. Check More Usecases
You can obtain the basic expandable widgets by writing one single line of code.
You can use Expandable with two required parameters.
Expandable(
firstChild: const Text('Hello world!'),
secondChild: Center(child: const Text('Hello world!')),
),
If you add subChild argument you will get an expandable with subtitle. See 1.0.2 or older versions for previous extended expandables.
Expandable(
firstChild: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(data, maxLines: 3, textAlign: TextAlign.justify),
),
secondChild: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(data, maxLines: 3, textAlign: TextAlign.justify),
),
subChild: Text("Show Details"),
),
You can use ExpandableText by giving the required parameter, textWidget. ExpandableText will handle the rest.
ExpandableText(textWidget: Text(data, maxLines: 3),
Let's say you want to use Expandable and Flutter's AnimatedIcon at the same time.
Just add the relevant animationController. Expandable will handle the rest!
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Expandable(
firstChild: Padding(
padding: const EdgeInsets.only(right: 8.0),
child: Text('Settings', style: TextStyle(fontSize: 18)),
),
secondChild: Column(children: [Text('Option 1'), Text('Option 2'), Text('Option 3')]),
animationController: _animationController,
arrowLocation: ArrowLocation.left,
arrowWidget: Padding(
padding: const EdgeInsets.all(8.0),
child: AnimatedIcon(icon: AnimatedIcons.menu_close, progress: _animation, size: 16),
),
),
Even more, one can combine AnimatedIcon and Expandable's rotation animation.
Give the same animation to AnimatedIcon and Expandable and finally, do not forget to add relevant animationController to Expandable.
Expandable(
firstChild: Padding(
padding: const EdgeInsets.only(right: 8.0),
child: Text('Settings', style: TextStyle(fontSize: 18)),
),
secondChild: Column(children: [Text('Option 1'), Text('Option 2'), Text('Option 3')]),
animation: _animation,
animationController: _animationController,
arrowLocation: ArrowLocation.left,
arrowWidget: Padding(
padding: const EdgeInsets.all(8.0),
child: AnimatedIcon(icon: AnimatedIcons.menu_close, progress: _animation, size: 16),
),
),
],
),
Expandable(
firstChild: Text('Nested Expandable Widgets'),
secondChild: Expandable(
borderRadius: BorderRadius.zero,
boxShadow: [],
firstChild: Text('Second Expandable'),
secondChild: Expandable(
borderRadius: BorderRadius.zero,
boxShadow: [],
firstChild: Text('Third Expandable'),
secondChild: Center(child: Text('The End')),
),
),
),
You can change the location of the arrow
ExpandableText(
textWidget: Text(data).copyWith(maxLines: 3),
arrowLocation: ArrowLocation.bottom,
finalArrowLocation: ArrowLocation.bottom,
),
You can use helper text
ExpandableText(textWidget: Text(data, maxLines: 3), helper: Helper.text),
Customized ExpandableText with helper text
ExpandableText(
textWidget: Text(data, maxLines: 5, textAlign: TextAlign.justify),
backgroundColor: Colors.white,
helper: Helper.text,
helperTextList: const ['...More', '...Less'],
helperTextStyle: const TextStyle(color: Colors.orange, fontWeight: FontWeight.bold),
boxShadow: const [BoxShadow(color: Colors.orange, offset: Offset(2, 2), blurRadius: 4)],
borderRadius: BorderRadius.circular(20.0),
padding: const EdgeInsets.all(12.0),
onPressed: () => print('hi!'),
),
Or you can remove the helper
ExpandableText(textWidget: Text(data, maxLines: 3), helper: Helper.none),
For more info please see example.
依赖清单 3 项
{"sdk":"flutter"}{"sdk":"flutter"}^1.0.0先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗