The following code yields a scrollable list together with a "translucent pinned sliver header".
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return [
SliverPersistentHeader(
delegate: _SliverPersistentHeaderDelegate(),
pinned: true,
),
];
},
body: ListView.builder(
itemBuilder: (context, index) {
return ListTile(
title: Container(
color: Colors.amber.withOpacity(0.3),
child: Text('Item $index'),
),
);
},
),
),
),
);
}
}
class _SliverPersistentHeaderDelegate extends SliverPersistentHeaderDelegate {
@override
Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
return Container(
color: Colors.blue.withOpacity(0.75),
child: Placeholder(),
);
}
@override double get maxExtent => 300;
@override double get minExtent => 200;
@override bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) => true;
}
It's all good; except, I need the "header" to be transparent, but having it translucent, causes the underneathed list-items to get revealed (as per the screenshot below).
So, how to "mask-out" the "list items" that are visible through the "translucent header"?

