Add Widget SliverFillRemaining after CupertinoSliverNavigationBar inside
the CustomScrollView.
SliverFillRemaining will take the remaining scrolling area and handle it. Now pass the TabBarView as the child for SliverFillRemaining.
Refer to the below code, for a sample implementation.
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
///
class TestScreen extends StatefulWidget {
/// base constructor
const TestScreen({super.key});
@override
State<TestScreen> createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen>
with SingleTickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(vsync: this, length: 3);
}
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: CustomScrollView(
slivers: [
const CupertinoSliverNavigationBar(
leading: Icon(Icons.person_2),
largeTitle: Text('Title'),
trailing: Icon(Icons.add_box),
),
//
SliverFillRemaining(
child: TabBarView(
controller: _tabController,
children: [
_buildTempList(15),
_buildTempList(5),
_buildTempList(25),
],
),
),
],
),
);
}
Widget _buildTempList(int itemCount) {
return ListView.builder(
itemCount: itemCount,
itemBuilder: (context, index) => CupertinoListTile(
title: Text('This is $index'),
),
);
}
}