Android 颤振断开装置。垂直卡片页
我制作了一张垂直卡片。通常我可以显示6张图片。但当我试图显示更多内容时,它不会打开,应用程序也会关闭。我想添加更多的图像。我想我需要调整一下尺寸。我该怎么办 此外,我还创建了一个数据表。我从那里获取信息。但我无法克服这个问题Android 颤振断开装置。垂直卡片页,android,flutter,mobile,Android,Flutter,Mobile,我制作了一张垂直卡片。通常我可以显示6张图片。但当我试图显示更多内容时,它不会打开,应用程序也会关闭。我想添加更多的图像。我想我需要调整一下尺寸。我该怎么办 此外,我还创建了一个数据表。我从那里获取信息。但我无法克服这个问题 import 'dart:math'; import 'package:flutter/material.dart'; import 'package:denemeapp/pq_data.dart'; class CepuyduPage extends Stateful
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:denemeapp/pq_data.dart';
class CepuyduPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return CepuyduPageState();
}
}
var cardAspectRatio = 12.0 / 16.0;
var widgetAspectRatio = cardAspectRatio * 1.2;
class CepuyduPageState extends State<CepuyduPage> {
var currentPage = images.length - 1.0;
@override
Widget build(BuildContext context) {
PageController controller = PageController(initialPage: images.length - 1);
controller.addListener(() {
setState(() {
currentPage = controller.page;
});
});
return Scaffold(
backgroundColor: Color(0xFF420420),
body: Center(
child: SingleChildScrollView(
child: Stack(
children: <Widget>[
CardScrollWidget(currentPage),
Positioned.fill(
child: PageView.builder(
itemCount: images.length,
controller: controller,
reverse: true,
itemBuilder: (context, index) {
return Container();
},
),
)
],
),
),
),
);
}
}
class CardScrollWidget extends StatelessWidget {
var currentPage;
var padding = 20.0;
var verticalInset = 20.0;
CardScrollWidget(this.currentPage);
@override
Widget build(BuildContext context) {
return new AspectRatio(
aspectRatio: widgetAspectRatio,
child: LayoutBuilder(builder: (context, contraints) {
var width = contraints.maxWidth;
var height = contraints.maxHeight;
var safeWidth = width - 2 * padding;
var safeHeight = height - 2 * padding;
var heightOfPrimaryCard = safeHeight;
var widthOfPrimaryCard = heightOfPrimaryCard * cardAspectRatio;
var primaryCardLeft = safeWidth - widthOfPrimaryCard;
var horizontalInset = primaryCardLeft / 2;
List<Widget> cardList = new List();
for (var i = 0; i < images.length; i++) {
var delta = i - currentPage;
bool isOnRight = delta > 0;
var start = padding +
max(
primaryCardLeft -
horizontalInset * -delta * (isOnRight ? 15 : 1),
0.0);
var cardItem = Positioned.directional(
top: padding + verticalInset * max(-delta, 0.0),
bottom: padding + verticalInset * max(-delta, 0.0),
start: start,
textDirection: TextDirection.rtl,
child: ClipRRect(
borderRadius: BorderRadius.circular(16.0),
child: Container(
decoration: BoxDecoration(color: Colors.white, boxShadow: [
BoxShadow(
color: Colors.black12,
offset: Offset(3.0, 6.0),
blurRadius: 10.0)
]),
child: AspectRatio(
aspectRatio: cardAspectRatio,
child: Stack(
fit: StackFit.expand,
children: <Widget>[
Image.asset(images[i], fit: BoxFit.cover),
Align(
alignment: Alignment.bottomLeft,
child: Container(
margin: EdgeInsets.only(bottom: 2),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(
left: 25,
),
child: Text(titles[i],
style: TextStyle(
color: Colors.white,
fontSize: 17,
fontWeight: FontWeight.w900,
fontFamily: "SF-Pro-Text-Regular")),
),
Padding(
padding: const EdgeInsets.only(left: 20),
child: Text(
"",
style: TextStyle(
fontSize: 15,
color: Colors.white,
),
),
)
],
),
))
],
),
),
),
),
);
cardList.add(cardItem);
}
return Stack(
children: cardList,
);
}),
);
}
}
import'dart:math';
进口“包装:颤振/材料.省道”;
导入“包:denemeapp/pq_data.dart”;
类CepuyduPage扩展StatefulWidget{
@凌驾
状态createState(){
//TODO:实现createState
返回cepuydepagestate();
}
}
var cardAspectRatio=12.0/16.0;
var widgetAspectRatio=cardAspectRatio*1.2;
类CepuyduPageState扩展了状态{
var currentPage=images.length-1.0;
@凌驾
小部件构建(构建上下文){
PageController=PageController(初始页:images.length-1);
controller.addListener(){
设置状态(){
currentPage=controller.page;
});
});
返回脚手架(
背景颜色:颜色(0xFF420420),
正文:中(
子:SingleChildScrollView(
子:堆栈(
儿童:[
CardScrollWidget(当前页面),
定位填充(
子项:PageView.builder(
itemCount:images.length,
控制器:控制器,
相反:是的,
itemBuilder:(上下文,索引){
返回容器();
},
),
)
],
),
),
),
);
}
}
类CardScrollWidget扩展了无状态Widget{
var-currentPage;
var=20.0;
var verticalInset=20.0;
CardScrollWidget(此.currentPage);
@凌驾
小部件构建(构建上下文){
返回新AspectRatio(
aspectRatio:widgetAspectRatio,
子级:布局生成器(生成器:(上下文,约束){
var width=containts.maxWidth;
var height=containts.maxHeight;
var safeWidth=宽度-2*填充;
var safeHeight=高度-2*填充;
var heightOfPrimaryCard=安全高度;
var widthOfPrimaryCard=PrimaryCard的高度*cardAspectRatio;
var primaryCardLeft=安全宽度-主卡宽度;
var horizontalInset=primaryCardLeft/2;
List cardList=新列表();
对于(var i=0;i0;
var start=padding+
马克斯(
primaryCardLeft-
水平插入*-三角洲*(等距15:1),
0.0);
var cardItem=Positioned.directive(
顶部:填充+垂直设置*max(-delta,0.0),
底部:填充+垂直设置*max(-delta,0.0),
开始:开始,
textDirection:textDirection.rtl,
孩子:ClipRRect(
边界半径:边界半径。圆形(16.0),
子:容器(
装饰:框装饰(颜色:Colors.white,框阴影:[
箱形阴影(
颜色:颜色。黑色,
偏移量:偏移量(3.0,6.0),
(半径:10.0)
]),
孩子:AspectRatio(
aspectRatio:cardAspectRatio,
子:堆栈(
fit:StackFit.expand,
儿童:[
图像.asset(图像[i],适合:BoxFit.cover),
对齐(
对齐:对齐。左下角,
子:容器(
页边距:仅限边集(底部:2),
子:列(
mainAxisAlignment:mainAxisAlignment.center,
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
填充物(
填充:仅限常量边设置(
左:25,
),
子:文本(标题[i],
样式:TextStyle(
颜色:颜色,白色,
尺寸:17,
fontWeight:fontWeight.w900,
fontFamily:“SF Pro文本常规”),
),
填充物(
填充:仅限常量边集(左:20),
子:文本(
"",
样式:TextStyle(
尺寸:15,
颜色:颜色,白色,
),
),
)
],
),
))
],
),
),
),
),
);
cardList.add(cardItem);
}
返回堆栈(
儿童:卡片列表,
);
}),
);
}
}