Flutter 颤振:页面视图在更改屏幕时松开旋转木马
我正在使用下面的代码使用PageView进行旋转传送Flutter 颤振:页面视图在更改屏幕时松开旋转木马,flutter,dart,flutter-layout,flutter-pageview,Flutter,Dart,Flutter Layout,Flutter Pageview,我正在使用下面的代码使用PageView进行旋转传送 PageView.builder( onPageChanged: (value) { setState(() { currentpage = value; });
PageView.builder(
onPageChanged: (value) {
setState(() {
currentpage = value;
});
},
controller: controller,
itemCount: data.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
debugPrint('Nilesh Rathod $index');
if (index == 0) {
Navigator.push(
context,
PageTransition(
type: PageTransitionType
.rightToLeft,
child: DetailPage()))
.then((value) {
debugPrint('nilu pilu');
controller.jumpToPage(0);
});
}
},
child: AnimatedBuilder(
animation: controller,
builder: (context, child) {
double value = 1.0;
if (controller.position.haveDimensions) {
value = controller.page - index;
value = (1 - (value.abs() * .5))
.clamp(0.0, 1.0);
}
return Align(
alignment: Alignment.topCenter,
child: SizedBox(
height:
Curves.easeOut.transform(value) *
300,
width:
Curves.easeOut.transform(value) *
250,
child: child,
),
);
},
child: Stack(children: <Widget>[
index == 0
? Container(
height: 300,
width: 220,
child: IconButton(
onPressed: () {
Utils.changeScreen(
context, CreateTripApp());
},
icon: Image.asset(
'assets/images/flight.png',
height: 120,
fit: BoxFit.cover,
width: 100,
),
),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(
'assets/images/home.png'),
fit: BoxFit.cover,
),
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
))
: Container(
height: 300,
width: 220,
decoration: BoxDecoration(
color: index % 2 == 0
? Colors.red
: Colors.green,
borderRadius:
BorderRadius.all(
Radius.circular(
20.0))),
),
Positioned(
bottom: 30,
right: 10,
left: 10,
child: index == 0
? Align(
alignment:
Alignment.bottomCenter,
child: Text(
Constants.createYourTrip,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
fontFamily:
Fonts.standardBold,
),
))
: Align(
alignment:
Alignment.bottomCenter,
child: Text(
'Hello There',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 16.0,
fontFamily:
Fonts.standardBold,
),
)))
]),
),
);
})
PageView.builder(
onPageChanged:(值){
设置状态(){
currentpage=值;
});
},
控制器:控制器,
itemCount:data.length,
itemBuilder:(上下文,索引){
返回手势检测器(
onTap:(){
debugPrint('Nilesh Rathod$index');
如果(索引==0){
导航器。推(
上下文
页面转换(
类型:PageTransitionType
.右至左,
子项:DetailPage())
.然后((值){
调试打印(“nilu pilu”);
控制器。跳线页(0);
});
}
},
子对象:动画生成器(
动画:控制器,
生成器:(上下文,子对象){
双值=1.0;
if(控制器位置尺寸){
值=controller.page-索引;
value=(1-(value.abs()*.5))
.夹具(0.0,1.0);
}
返回对齐(
对齐:alignment.topCenter,
孩子:大小盒子(
高度:
曲线.easeOut.transform(值)*
300,
宽度:
曲线.easeOut.transform(值)*
250,
孩子:孩子,
),
);
},
子:堆栈(子:[
索引==0
?容器(
身高:300,
宽度:220,
孩子:我的钮扣(
已按下:(){
Utils.changeScreen(
上下文,CreateTripApp());
},
图标:Image.asset(
“assets/images/flight.png”,
身高:120,
适合:BoxFit.cover,
宽度:100,
),
),
装饰:盒子装饰(
图像:装饰图像(
图片:资产评估(
“assets/images/home.png”),
适合:BoxFit.cover,
),
borderRadius:borderRadius.all(
圆形半径(20.0),
),
))
:容器(
身高:300,
宽度:220,
装饰:盒子装饰(
颜色:索引%2==0
?颜色:红色
:颜色。绿色,
边界半径:
好的(
圆半径(
20.0))),
),
定位(
底数:30,
右:10,,
左:10,,
子:索引==0
?对齐(
对齐:
对齐。底部中心,
子:文本(
常数。创建您的旅行,
textAlign:textAlign.center,
款式:T
if (_controller.position.haveDimensions) {
value = _controller.page - index;
value = (1 - (value.abs() * .5)).clamp(0.0, 1.0);
}
else if (index != 0)
value = 0.5;