I'm having two tabs in my tabbar and card widget which makes up both of tabbarviews. I am using Slivers in this case.CustomScrollView is my parent widget. I am displaying Texts in these views but they take extra empty spacing from bottom which I want to get rid of.If these widgets are placed outside tabbarview they work fine and justify height according to their content.The last widget I've added outside of tabbarview and as you can see it works fine.
Here is my code:
import 'package:flutter/material.dart';
class TabviewIssue extends StatefulWidget {
@override
_TabviewIssueState createState() => _TabviewIssueState();
}
class _TabviewIssueState extends State<TabviewIssue>with TickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
super.initState();
this._tabController = TabController(length: 2, vsync: this);
}
String htmlText = 'So vitamins and nutrients are optimally preserved, flavors unfold particularly well. In order to keep the cat food fresh, a special flavor protection foil in the packaging ensures that the oxygen content in the pack is reduced, oxidation is inhibited and the flavors in the cat food are preserved. True love Landlust cat food has exactly the energy content that your cat needs. It provides optimal nutrients and is very digestible. Cat food from True Love is healthy food that tastes cats.';
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverToBoxAdapter(child: SizedBox(height: 50,)),
SliverToBoxAdapter(
child: Container(
color: Colors.grey.shade100,
child: Padding(
padding: const EdgeInsets.all(10.0),
child: TabBar(
indicator: BoxDecoration(color: Colors.grey.shade400),
labelColor: Colors.white,
unselectedLabelColor: Colors.black,
indicatorColor: Colors.grey,
tabs: <Widget>[
Tab(
child: Text("Product Features",
style: TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500))),
Tab(
child: Text("Reviews",
style: TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500))),
],
controller: this._tabController,
),
)),
),
SliverFillRemaining(
child: TabBarView(
controller: _tabController,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: Card(
color: Colors.grey.shade200,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(children: <Widget>[
Text("Features",
style: TextStyle(
fontSize: 17, fontWeight: FontWeight.bold)),
Text( htmlText),
]),
)),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Card(
color: Colors.grey.shade200,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(children: <Widget>[
Text("Features",
style: TextStyle(
fontSize: 17, fontWeight: FontWeight.bold)),
Text( htmlText),
]),
)),
),
]),
),
SliverToBoxAdapter(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Card(
color: Colors.grey.shade200,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(children: <Widget>[
Text("Features",
style: TextStyle(
fontSize: 17, fontWeight: FontWeight.bold)),
Text( htmlText),
]),
)),
),
)
],
),
),
);
}
}