Android 颤振断开装置。垂直卡片页

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

我制作了一张垂直卡片。通常我可以显示6张图片。但当我试图显示更多内容时,它不会打开,应用程序也会关闭。我想添加更多的图像。我想我需要调整一下尺寸。我该怎么办

此外,我还创建了一个数据表。我从那里获取信息。但我无法克服这个问题

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);
}
返回堆栈(
儿童:卡片列表,
);
}),
);
}
}