Home > Software engineering >  The class 'SimpleFoldingCell' doesn't have a default constructor
The class 'SimpleFoldingCell' doesn't have a default constructor

Time:11-23

https://github.com/flutter-devs/flutter_folding_cell_demo/blob/master/lib/demo_screen.dart

I'm trying to follow the code in the link above. But in the SimpleFoldingCell part, an error named 'The class 'SimpleFoldingCell' doesn't have a default constructor.' occurs. Could Is there a way to resolve this error in Dart?

class Notific extends StatefulWidget{
  @override
  _State createState() => _State();
}

class _State extends State<Notific>{
  late List<TechnologyModel> _technologyList;

  @override
  void initState() {
    super.initState();
    _technologyList = [
      TechnologyModel(title: "Application Development",),
      TechnologyModel(title: "Research & Development",),
      TechnologyModel(title: "Big Data & Analytics",),
      TechnologyModel(title: "Support Services",),
      TechnologyModel(title: "QA & Software Testing",),
    ];

  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        automaticallyImplyLeading: false,
        backgroundColor: Colors.pink[200],
        title: Text("Folding Cell Demo",
          style: TextStyle(color: Colors.white),),
      ),
      body: Container(
        child: ListView.builder(
          itemCount: _technologyList.length,
          itemBuilder: (context, index) {
            return SimpleFoldingCell(
              frontWidget: _buildFrontWidget(index),
              innerTopWidget: _buildInnerWidget(index),
              innerBottomWidget: _buildInnerBottomWidget(),
              cellSize: Size(MediaQuery.of(context).size.width, 125),
              padding: EdgeInsets.all(15),
              animationDuration: Duration(milliseconds: 200),
              borderRadius: 10,
              onOpen: () => print('$index cell opened'),
              onClose: () => print('$index cell closed'),
            );
          },
        ),
      ),
    );
  }

  Widget _buildFrontWidget(int index) {
    return Builder(
      builder: (BuildContext context) {
        return Container(
          color:  Colors.cyan[100],
          alignment: Alignment.bottomCenter,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                "Aeologic Technology",
                style: TextStyle(
                  fontSize:20.0,
                  color: Colors.black,
                ),
              ),
              SizedBox(height: 10,),
              FlatButton(
                onPressed: () {
                  final foldingCellState = context
                      .findAncestorStateOfType<SimpleFoldingCellState>();
                  foldingCellState?.toggleFold();
                },
                child: Text(
                  "OPEN",
                ),
                textColor: Colors.white,
                color: Colors.indigoAccent[100],
                splashColor: Colors.white.withOpacity(0.5),
              ),
            ],
          ),
        );
      },
    );
  }

  Widget _buildInnerBottomWidget() {
    return Builder(
        builder: (context) {
          return Container(
            color: Colors.blueGrey[50],
            alignment: Alignment.bottomCenter,
            child: Padding(
              padding: EdgeInsets.only(bottom: 10),
              child: FlatButton(
                onPressed: () {
                  final foldingCellState = context
                      .findAncestorStateOfType<SimpleFoldingCellState>();
                  foldingCellState?.toggleFold();
                },
                child: Text(
                  "Close",
                ),
                textColor: Colors.white,
                color: Colors.redAccent[100],
                splashColor: Colors.white.withOpacity(0.5),
              ),
            ),
          );
        }
    );
  }

  Widget _buildInnerWidget(int index) {
    return Builder(
      builder: (context) {
        return Container(
          color: Colors.pink[100],
          padding: EdgeInsets.only(top: 10),
          child: Align(
            alignment: Alignment.center,
            child: Text(
              _technologyList[index].title,
              style: TextStyle(
                fontSize:20.0,
                color: Colors.black,
              ),
            ),
          ),
        );
      },
    );
  }
}
class TechnologyModel {
  String title;

  TechnologyModel({
    required this.title,
  });
}

CodePudding user response:

For some reason they've created only a named constructor.

return SimpleFoldingCell.create(
  frontWidget: _buildFrontWidget(index),
  innerWidget: _buildInnerWidget(index),
  // innerTopWidget: _buildInnerWidget(index),
  // innerBottomWidget: _buildInnerBottomWidget(),
  cellSize: Size(MediaQuery.of(context).size.width, 125),
  padding: EdgeInsets.all(15),
  animationDuration: Duration(milliseconds: 200),
  borderRadius: 10,
  onOpen: () => print('$index cell opened'),
  onClose: () => print('$index cell closed'),
);

It looks like the demo you're looking at is a bit outdated, since some of those properties don't exist anymore (see commented code).

  • Related