Flutter. How to manage state with SliverPersistentHeaderDelegate in Sliver?

Viewed 1249

I use CustomScrollView with Slivers. In header I have some text field with autocomplete (search data in database) and when input text equal some value I need do something. I try to use SliverPersistentHeader. But it can't set state. How to set state?

The declaration setState() isn't referenced

What's wrong?

class MySliverAppBar extends SliverPersistentHeaderDelegate {
  final double expandedHeight;
  MySliverAppBar({@required this.expandedHeight});

  @override
  Widget build(
      BuildContext context, double shrinkOffset, bool overlapsContent) {
    return
      StatefulBuilder(
        builder:(BuildContext context, StateSetter setState) {
          return Stack(
            overflow: Overflow.visible,
            children: [
              SizedBox(
                height: 200,
                child: AppBar(
                  backgroundColor: Colors.green,
                  leading: IconButton(
                    icon: Icon(Icons.menu),
                    onPressed: () {},
                  ),
                  elevation: 0.0,
                ),
              ),
              RaisedButton(
                child: Text("Press"),
                color: Colors.yellow,
                onPressed: (){
                  setState(){
                    // The declaration setState() isn't referenced

                  }
                },),
            ],
          );
        }
      );
  }

  @override
  double get maxExtent => expandedHeight;

  @override
  double get minExtent => kToolbarHeight;

  @override
  bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) => true;
}
1 Answers

Try to use this on :

StatefulBuilder(
            builder:(BuildContext context, StateSetter setState) {
return //Whatever you want to use here ();
},
),

If It doesn't work comment down pls.

Related