我在Flutter中遇到PageView.builder
的高度问题。我想根据屏幕大小设置高度。我尝试使用MediaQuery
设置高度,但我仍然面临这个问题。
我尝试使用MediaQuery
设置高度,如下所示:
final Size size = MediaQuery.of(context).size;
height: size.height / 2 * 1.2,
以下是我的PageView.builder
的完整代码:
SizedBox(
height: size.height / 2 * 1.2,
child: PageView.builder(
controller: _pageController,
onPageChanged: (index) {
setState(() {
_currentIndex = index;
});
},
itemCount: 3,
physics: const PageScrollPhysics(),
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.only(top: 50, left: 0, right: 20),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.accents[index].withOpacity(0.5),
),
// height: size.height / 2,
// width: size.width / 2 * 1.5,
child: Padding(
padding: const EdgeInsets.all(30.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Plan ${index + 1}',
style: const TextStyle(
fontSize: 20, fontWeight: FontWeight.w500),
),
Constants.height10,
const Text(
'Lorem ipsum dolor sit amet, consectetur itd ',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
),
),
Constants.height20,
ListView.separated(
shrinkWrap: true,
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return Row(
children: const [
CircleAvatar(
radius: 3,
backgroundColor: Colors.black,
),
SizedBox(width: 10),
Text('Lorem ipsum dolor sit '),
],
);
},
separatorBuilder: (context, index) => Constants.height10,
),
const Divider(thickness: 2),
Row(
children: const [
Text(
'\$199/',
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
Padding(
padding: EdgeInsets.only(top: 20),
child: Text(
'month',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
)
],
)
],
),
),
),
);
},
),
);
但我仍然有问题,如两个不同大小屏幕的屏幕截图所示:
我试着给更多的空间来避免溢出,但是当涉及到更大的屏幕时,PageView.builder变得过大,使UI看起来很糟糕。我想让PageView.builder看起来像在给定的屏幕截图上的iPhone屏幕。
有人能帮我根据Flutter中的屏幕大小正确设置PageView.builder的高度吗?谢谢你的时间
2条答案
按热度按时间dhxwm5r41#
最好使用
LayoutBuilder
进行响应式设计,对于您的情况,使用Expanded
小部件 Package ListView并遵循以下操作关于adaptive-design
7cwmlq892#