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'));
          }),
    );
  }