Note: This widget is child of another Column
I need to use ListView.builder inside Column but to use it inside Column i need to wrap it with Container not only that i need to set the height,
here i used MediaQuery.of(context).size.height and it works,
but with one issue,it is showing that A RenderFlex overflowed by 226 pixels on the bottom.
How to avoid it ?
Column(
children: <Widget>[
getTopWidget(),
Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: ListView.builder(
itemCount: shapShot.data.length,
itemBuilder: (context,index){
return EventCard(
title: shapShot.data[index].title,
details: shapShot.data[index].details,
imageUrl: shapShot.data[index].imageUrl,
);
}),
),
],
);
I tried with Flexible and it not worked
When in try with Expanded
it makes below error
App screenshot
RenderBox was not laid out: RenderRepaintBoundary#76ded NEEDS-LAYOUT NEEDS-PAINT 'package:flutter/src/rendering/box.dart': Failed assertion: line 1695 pos 12: 'hasSize'
The parent class code
import 'dart:collection';
import 'package:devaayanam/DevaayanamApp/devaayanam_app_communities.dart';
import 'package:devaayanam/DevaayanamApp/devaayanam_app_home_page.dart';
import 'package:devaayanam/DevaayanamApp/devaayanam_app_temples_listing.dart';
import 'package:devaayanam/DevaayanamApp/devaayanam_app_videos.dart';
import 'package:flutter/material.dart';
import '../GradientAppBar.dart';
import 'temples_listing_with_tab_mode.dart';
class DevaayanamAppFramePage extends StatefulWidget {
DevaayanamAppFramePage({Key key}) : super(key: key);
@override
_DevaayanamAppFramePageState createState() => _DevaayanamAppFramePageState();
}
class _DevaayanamAppFramePageState extends State<DevaayanamAppFramePage> {
int _selectedIndex = 0;
ListQueue<Widget> page1,page2,page3,page4;
_DevaayanamAppFramePageState(){
page1=ListQueue();
page1.add(DevaayanamAppHomePage());
page2=ListQueue();
page2.add(DevaayanamAppTemplesListing());
page3=ListQueue();
page3.add(DevaayanamAppCommunities());
page4=ListQueue();
page4.add(DevaayanamAppVideos());
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: null,
bottomNavigationBar: BottomNavigationBar(
onTap: _onItemTapped,
unselectedItemColor: Colors.grey,
selectedItemColor: Colors.grey,
currentIndex: _selectedIndex,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(
Icons.home,
color: Colors.grey,
),
title: Text(
"Home",
style: TextStyle(color: Colors.grey),
)),
BottomNavigationBarItem(
icon: Icon(Icons.assessment),
title: Text(
"Temples",
style: TextStyle(color: Colors.grey),
)),
BottomNavigationBarItem(
icon: Icon(Icons.comment),
title: Text(
"Communities",
style: TextStyle(color: Colors.grey),
)),
BottomNavigationBarItem(
icon: Icon(Icons.play_arrow),
title: Text(
"Videos",
style: TextStyle(color: Colors.grey),
)),
]),
body: Container(
child: Column(
children: <Widget>[GradientAppBar(),getBody()],
),
),
);
}
Widget getBody(){
switch(_selectedIndex){
case 0:
return page1.last;
case 1:
return page2.last;
case 2:
return page3.last;
case 3:
return page4.last;
}
}
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
}