Флаттер веб: поведение SliverPersistentHeader - PullRequest
0 голосов
/ 28 сентября 2019

Я следую этому учебнику , но использую веб-флаттер

Я столкнулся с этой проблемой с моим кодом:

  @override
  Widget build(BuildContext context) {
    final Size _size = MediaQuery.of(context).size;
    return Center(
        child: Container(
          height: _size.height,
          width: maxWidth(_size),
          color: indigo,
          child:  CustomScrollView(
            slivers: <Widget>[
              SliverPersistentHeader(
                pinned: true,
                floating: true,
                delegate: SliverHeaderDelegate(
                  minExtent: _size.height*0.1,
                  maxExtent: _size.height*0.5),),
            SliverFillRemaining()
          ],),),);}}

, где делегат заголовка:

class SliverHeaderDelegate implements SliverPersistentHeaderDelegate {
    SliverHeaderDelegate({
    this.minExtent,
    @required this.maxExtent,
  });
  final double minExtent;
  final double maxExtent;

  @override
  Widget build(BuildContext context, double shrinkOffset, bool overlapsContent)=> 
    Center(
      child: Container(
          child:Text('test',textScaleFactor: 5,),
    );

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

  @override
  FloatingHeaderSnapConfiguration get snapConfiguration => null;
}

дает это результат

, но если я заменю SliverPersistentHeader на это:

  SliverAppBar( pinned: true,
          expandedHeight: _size.height*0.5,
          flexibleSpace: FlexibleSpaceBar(
            title: Text('test',textScaleFactor: 5,),
          ),),

результат резко меняется, как вы можете видеть здесь

есть идеи, почему и как это исправить?спасибо

...