私は 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),
],
),
),
],
),
],
),
),
),