简体   繁体   English

Flutter。 如何在 Sliver 中使用 SliverPersistentHeaderDelegate 管理 state?

[英]Flutter. How to manage state with SliverPersistentHeaderDelegate in Sliver?

I use CustomScrollView with Slivers.我将 CustomScrollView 与 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.在 header 我有一些带有自动完成功能的文本字段(在数据库中搜索数据),当输入文本等于某个值时,我需要做一些事情。 I try to use SliverPersistentHeader.我尝试使用 SliverPersistentHeader。 But it can't set state.但不能设置state。 How to set state?如何设置 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;
}

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.如果它不起作用请评论下来。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM