sliverappbar 的颤动底部让 1 像素的背景

问题描述

我有一个小问题,我的标题中有时会显示一个 1 像素的条,如下图所示。

我的代码如下。第一个功能只是计算滚动以让用户拥有漂亮的动画。 第 1 个像素被蓝色包围。 如果有人能解决这个问题,我会很自豪^^'...

enter image description here

import 'package:Flutter/material.dart';
import 'package:Flutter_share/Flutter_share.dart';

class _CustomHeaderState extends State<CustomHeader> {
  ScrollController _scrollController;
  double heightHeader = 0;
  _scrollListener() {
    if (_scrollController.hasClients) {
      double calcul2 = 2 / ((300 - kToolbarHeight) / _scrollController.offset);
      if (calcul2 < 0 && heightHeader != 0) {
        setState(() {
          heightHeader = 0;
        });
      } else if (calcul2 > 2 && heightHeader != 2) {
        setState(() {
          heightHeader = 2;
        });
      } else if (calcul2 >= 0 && calcul2 <= 2) {
        if (heightHeader != calcul2) {
          setState(() {
            heightHeader = calcul2;
          });
        }
      }
    }
  }

  @override
  void initState() {
    _scrollController = ScrollController();
    _scrollController.addListener(_scrollListener);

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // extendBody: true,body: CustomScrollView(
        controller: _scrollController,slivers: [
          SliverAppBar(
            primary: true,pinned: true,automaticallyImplyLeading: false,backgroundColor: Colors.white,title: Text(""),// elevation: 0,expandedHeight: 300,flexibleSpace: FlexibleSpaceBar(
              background: widget.image,),actions: [//header changed when scroll],bottom: PreferredSize(
              preferredSize: Size(MediaQuery.of(context).size.width,0),child: Container(
                margin: EdgeInsets.zero,padding: EdgeInsets.zero,height: heightHeader >= 1.75 ? 25 - ((heightHeader - 1.75) * 100) : 25,decoration: Boxdecoration(
                  color: Colors.white,borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(25),topRight: Radius.circular(25),SliverToBoxAdapter(
            child: widget.child,],);
  }
}

解决方法

您是在谈论本机设备状态栏吗?

如果是,则先导入服务

import 'package:flutter/services.dart';

然后将其添加到主函数

SystemChrome.setEnabledSystemUIOverlays([])

,

在这个问题上工作了几天之后,我最终采用了一个没有 sliverappbar 的新解决方案,它运行良好! 我刚刚做了一个有两个定位的堆栈。 第一个只显示一个带有填充的 singlechildscrollview,第二个是出现在滚动条上的标题。

感谢所有贡献者!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...