Flutter 如何在此颤振代码中添加多个折叠卡单元
我尝试了这个插件的折叠卡小部件。但我不知道如何添加多张卡,如果您知道任何解决方案,请帮助我Flutter 如何在此颤振代码中添加多个折叠卡单元,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我尝试了这个插件的折叠卡小部件。但我不知道如何添加多张卡,如果您知道任何解决方案,请帮助我 import 'package:flutter/material.dart'; import 'package:folding_cell/folding_cell.dart'; void main() => runApp(MaterialApp( home: SafeArea( child: Scaffold(body: Material(child: FoldingCel
import 'package:flutter/material.dart';
import 'package:folding_cell/folding_cell.dart';
void main() => runApp(MaterialApp(
home: SafeArea(
child: Scaffold(body: Material(child: FoldingCellSimpleDemo())))));
/// Example 1 folding cell inside [Container]
class FoldingCellSimpleDemo extends StatelessWidget {
final _foldingCellKey = GlobalKey<SimpleFoldingCellState>();
@override
Widget build(BuildContext context) {
return Container(
color: Color(0xFF2e282a),
alignment: Alignment.topCenter,
child: SimpleFoldingCell(
key: _foldingCellKey,
frontWidget: _buildFrontWidget(),
innerTopWidget: _buildInnerTopWidget(),
innerBottomWidget: _buildInnerBottomWidget(),
cellSize: Size(MediaQuery.of(context).size.width, 125),
padding: EdgeInsets.all(15),
animationDuration: Duration(milliseconds: 300),
borderRadius: 10,
onOpen: () => print('cell opened'),
onClose: () => print('cell closed')),
);
}
Widget _buildFrontWidget() {
return Container(
color: Color(0xFFffcd3c),
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("CARD",
style: TextStyle(
color: Color(0xFF2e282a),
fontFamily: 'OpenSans',
fontSize: 20.0,
fontWeight: FontWeight.w800)),
FlatButton(
onPressed: () => _foldingCellKey?.currentState?.toggleFold(),
child: Text(
"Open",
),
textColor: Colors.white,
color: Colors.indigoAccent,
splashColor: Colors.white.withOpacity(0.5),
)
],
));
}
Widget _buildInnerTopWidget() {
return Container(
color: Color(0xFFff9234),
alignment: Alignment.center,
child: Text("TITLE",
style: TextStyle(
color: Color(0xFF2e282a),
fontFamily: 'OpenSans',
fontSize: 20.0,
fontWeight: FontWeight.w800)));
}
Widget _buildInnerBottomWidget() {
return Container(
color: Color(0xFFecf2f9),
alignment: Alignment.bottomCenter,
child: Padding(
padding: EdgeInsets.only(bottom: 10),
child: FlatButton(
onPressed: () => _foldingCellKey?.currentState?.toggleFold(),
child: Text(
"Close",
),
textColor: Colors.white,
color: Colors.indigoAccent,
splashColor: Colors.white.withOpacity(0.5),
),
),
);
}
}
/// Example 2 folding cell inside [ListView]
class FoldingCellListViewDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Color(0xFF2e282a),
child: ListView.builder(
itemCount: 100,
itemBuilder: (context, index) {
return SimpleFoldingCell(
frontWidget: _buildFrontWidget(index),
innerTopWidget: _buildInnerTopWidget(index),
innerBottomWidget: _buildInnerBottomWidget(index),
cellSize: Size(MediaQuery.of(context).size.width, 125),
padding: EdgeInsets.all(15),
animationDuration: Duration(milliseconds: 300),
borderRadius: 10,
onOpen: () => print('$index cell opened'),
onClose: () => print('$index cell closed'));
}),
);
}
Widget _buildFrontWidget(int index) {
return Builder(
builder: (BuildContext context) {
return Container(
color: Color(0xFFffcd3c),
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("CARD - $index",
style: TextStyle(
color: Color(0xFF2e282a),
fontFamily: 'OpenSans',
fontSize: 20.0,
fontWeight: FontWeight.w800)),
FlatButton(
onPressed: () {
SimpleFoldingCellState foldingCellState =
context.ancestorStateOfType(
TypeMatcher<SimpleFoldingCellState>());
foldingCellState?.toggleFold();
},
child: Text(
"Open",
),
textColor: Colors.white,
color: Colors.indigoAccent,
splashColor: Colors.white.withOpacity(0.5),
)
],
));
},
);
}
Widget _buildInnerTopWidget(int index) {
return Container(
color: Color(0xFFff9234),
alignment: Alignment.center,
child: Text("TITLE - $index",
style: TextStyle(
color: Color(0xFF2e282a),
fontFamily: 'OpenSans',
fontSize: 20.0,
fontWeight: FontWeight.w800)));
}
Widget _buildInnerBottomWidget(int index) {
return Builder(builder: (context) {
return Container(
color: Color(0xFFecf2f9),
alignment: Alignment.bottomCenter,
child: Padding(
padding: EdgeInsets.only(bottom: 10),
child: FlatButton(
onPressed: () {
SimpleFoldingCellState foldingCellState = context
.ancestorStateOfType(TypeMatcher<SimpleFoldingCellState>());
foldingCellState?.toggleFold();
},
child: Text(
"Close",
),
textColor: Colors.white,
color: Colors.indigoAccent,
splashColor: Colors.white.withOpacity(0.5),
),
),
);
});
}
}
导入“包装:颤振/材料.省道”;
进口“包装:折叠单元/折叠单元.省道”;
void main()=>runApp(MaterialApp(
家:安全区(
儿童:脚手架(身体:材料(儿童:折叠细胞SimpleDemo()));
///示例1[容器]内的折叠单元
类FoldingCellSimpleDemo扩展了无状态小部件{
最终_foldingCellKey=GlobalKey();
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色(0xFF2e282a),
对齐:alignment.topCenter,
子:SimpleFoldingCell(
键:_foldingCellKey,
frontWidget:_buildFrontWidget(),
innerTopWidget:\u buildInnerTopWidget(),
innerBottomWidget:\u buildInnerBottomWidget(),
cellSize:Size(MediaQuery.of(context).Size.width,125),
填充:边缘设置。全部(15),
animationDuration:持续时间(毫秒:300),
边界半径:10,
onOpen:()=>打印('单元格已打开'),
onClose:()=>打印('单元格关闭'),
);
}
Widget_buildFrontWidget(){
返回容器(
颜色:颜色(0xFFffcd3c),
对齐:对齐.center,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文字(“卡片”,
样式:TextStyle(
颜色:颜色(0xFF2e282a),
fontFamily:“OpenSans”,
字体大小:20.0,
fontWeight:fontWeight.w800),
扁平按钮(
按下时:()=>_foldingCellKey?.currentState?.toggleFold(),
子:文本(
“开放”,
),
textColor:Colors.white,
颜色:Colors.indigoAccent,
飞溅颜色:颜色。白色。不透明度(0.5),
)
],
));
}
小部件_buildInnerTopWidget(){
返回容器(
颜色:颜色(0xFFff9234),
对齐:对齐.center,
子项:文本(“标题”,
样式:TextStyle(
颜色:颜色(0xFF2e282a),
fontFamily:“OpenSans”,
字体大小:20.0,
fontWeight:fontWeight.w800);
}
小部件_buildInnerBottomWidget(){
返回容器(
颜色:颜色(0xFFecf2f9),
对齐:对齐.bottomCenter,
孩子:填充(
填充:仅限边缘设置(底部:10),
孩子:扁平按钮(
按下时:()=>_foldingCellKey?.currentState?.toggleFold(),
子:文本(
“结束”,
),
textColor:Colors.white,
颜色:Colors.indigoAccent,
飞溅颜色:颜色。白色。不透明度(0.5),
),
),
);
}
}
///示例2内部折叠单元格[ListView]
类FoldingCellListViewDemo扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色(0xFF2e282a),
子项:ListView.builder(
物品计数:100,
itemBuilder:(上下文,索引){
返回SimpleFoldingCell(
frontWidget:_buildFrontWidget(索引),
innerTopWidget:_buildInnerTopWidget(索引),
innerBottomWidget:_buildInnerBottomWidget(索引),
cellSize:Size(MediaQuery.of(context).Size.width,125),
填充:边缘设置。全部(15),
animationDuration:持续时间(毫秒:300),
边界半径:10,
onOpen:()=>打印(“$index cell opened”),
onClose:()=>打印(“$index cell closed”);
}),
);
}
Widget\u buildFrontWidget(int索引){
返回生成器(
生成器:(BuildContext上下文){
返回容器(
颜色:颜色(0xFFffcd3c),
对齐:对齐.center,
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本(“卡片-$index”,
样式:TextStyle(
颜色:颜色(0xFF2e282a),
fontFamily:“OpenSans”,
字体大小:20.0,
fontWeight:fontWeight.w800),
扁平按钮(
已按下:(){
SimpleFoldingCellState折叠CellState=
context.anteStorStateofType(
TypeMatcher());
foldingCellState?.toggleFold();
},
子:文本(
“开放”,
),
textColor:Colors.white,
颜色:Colors.indigoAccent,
飞溅颜色:颜色。白色。不透明度(0.5),
)
],
));
},
);
}
Widget\u buildInnerTopWidget(int索引){
返回容器(
颜色:颜色(0xFFff9234),
对齐:对齐.center,
子项:文本(“标题-$index”,
样式:TextStyle(
颜色:颜色(0xFF2e282a),
fontFamily:“OpenSans”,
字体大小:20.0,
fontWeight:fontWeight.w800);
}
Widget\u buildInnerBottomWidget(int索引){
返回生成器(生成器:(上下文){
返回容器(
颜色:颜色(0xFFecf2f9),
对齐:对齐.bottomCenter,
孩子:填充(
填充:仅限边缘设置(底部:10),
孩子:扁平按钮(
已按下:(){
SimpleFoldingCellState foldingCellState=上下文
.ancestorStateOfType(TypeMatcher());
foldingCellState?.toggleFold();
},
子:文本(
“结束”,
),
textColor:Colors.white,
颜色:Colors.indigoAccent,
splashColor:Colors.whit
void main() => runApp(MaterialApp(
home: SafeArea(
child: Scaffold(body: Material(child: FoldingCellListViewDemo())))));
class FoldingCellListViewDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Color(0xFF2e282a),
child: ListView.builder(
itemCount: 100,
itemBuilder: (context, index) {
return SimpleFoldingCell(
frontWidget: _buildFrontWidget(index),
innerTopWidget: _buildInnerTopWidget(index),
innerBottomWidget: _buildInnerBottomWidget(index),
cellSize: Size(MediaQuery.of(context).size.width, 125),
padding: EdgeInsets.all(15),
animationDuration: Duration(milliseconds: 300),
borderRadius: 10,
onOpen: () => print('$index cell opened'),
onClose: () => print('$index cell closed'));
}),
);
}