1

私は SliverAppBar を使用しているフラッターで UI を作成しようとしています (CustomScrollView または NestedScrollView のいずれかを使用する必要があるため、これについて言及します)。画面の上部に表示されますが、下部のリストには表示されます。CustomScrollView を使用すると、全体としてスクロールするか、まったくスクロールしません (Appbar を含む)。NestedScrollView で、NeverScrollableScrollPhysics を使用すると、アプリバーはスクロールし、本体はスクロールしません。これで、全身をスクロール可能にするか、ピクセル エラーが発生します。私を助けてください。

以下の NestedScrollView コードを追加しました。スライバーバーが消えたら、検索バーとカートに行くコンテナーが上部に固定される必要があります。

NestedScrollView(
         physics: NeverScrollableScrollPhysics(),
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            SliverAppBar(
              backgroundColor: Color(0xffececec),
              shadowColor: Colors.transparent,
              iconTheme: IconThemeData(color: Colors.black),
              pinned: false,
              centerTitle: true,
              expandedHeight: 200.0,
              floating: false,
              forceElevated: innerBoxIsScrolled,
              // snap: true,
              flexibleSpace: SingleChildScrollView(
                  scrollDirection: Axis.horizontal,
                  child: Container(
                    padding: EdgeInsets.only(top: 80),
                    child: Row(
                      children: [
                        banner(
                            image),
                        banner(
                            image),
                        banner(
                           image),
                      ],
                    ),
                  )),
              actions: [
                InkWell(
                  onTap: () {
                    Navigator.push(
                        context, MaterialPageRoute(builder: (_) => Cart()));
                  },
                  child: Icon(
                    Icons.shopping_cart,
                    color: Colors.black,
                  ),
                ),
                SizedBox(width: Units.width(context) * 0.03),
              ],
            )
          ];
        },
        body: SingleChildScrollView(
          physics: NeverScrollableScrollPhysics(),
          child: Column(
            children: [
              Row(
                children: [
                  Text('Search'),
                         Icon(
                          FontAwesomeIcons.search,
                          color: Colors.white,
                        ),
                     
                ],
              ),
              Container(
                height: Units.height(context) * 0.1,
                width: Units.height(context) * 0.17,
               
                child: Text(
                  "Go to cart",
                  style: TextStyle(
                      fontSize: Units.regularText(context) * 0.9,
                      fontWeight: FontWeight.bold),
                ),
              ),
              ListView(
                shrinkWrap: true,
                physics: AlwaysScrollableScrollPhysics(),
                children: [
                  Center(
                    child: Wrap(
                      children: [
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                        lappyCard(context),
                      ],
                    ),
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
4

1 に答える 1