日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

滑动翻页效果_Flutter实现3D效果,一个字,炫!

發(fā)布時間:2025/3/12 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 滑动翻页效果_Flutter实现3D效果,一个字,炫! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
老孟的博客地址:http://laomengit.com/Flutter 中3D效果是通過Transform組件實現的,沒有變換效果的實現:?class?TransformDemo?extends?StatelessWidget?{@overrideWidget?build(BuildContext?context)?{return?Scaffold(
??????appBar:?AppBar(
????????title:?Text('3D?變換Demo'),
??????),
??????body:?Container(
????????alignment:?Alignment.center,
????????color:?Colors.white,
????????child:?Text('3D?變換Demo'),
??????),
????);
??}
}通過 GestureDetector 組件添加滑動事件監(jiān)聽:@overrideWidget?build(BuildContext?context)?{return?Scaffold(
????appBar:?AppBar(
??????title:?Text('3D?變換Demo'),
????),
????body:?GestureDetector(
??????onPanUpdate:?(details)?{
????????print('$details');
??????},
??????child:?Container(
????????alignment:?Alignment.center,
????????color:?Colors.white,
????????child:?Text('3D?變換Demo'),
??????),
????),
??);
}添加?Transform對組件進入旋轉:@overrideWidget?build(BuildContext?context)?{return?Transform(
??????transform:?Matrix4.identity()
????????..setEntry(3,?2,?0.001)
????????..rotateX(pi/6)
????????..rotateY(pi/6),
??????alignment:?Alignment.center,
??????child:?Scaffold(
????????appBar:?AppBar(
??????????title:?Text('3D?變換Demo'),
????????),
????????body:?GestureDetector(
??????????onPanUpdate:?(details)?{
??????????},
??????????child:?Container(
????????????alignment:?Alignment.center,
????????????color:?Colors.white,
????????????child:?Text('3D?變換Demo'),
??????????),
????????),
??????));
}將滑動的偏移和旋轉進行關聯:class?TransformDemo?extends?StatefulWidget?{@override_TransformDemoState?createState()?=>?_TransformDemoState();
}class?_TransformDemoState?extends?State<TransformDemo>?{double?_rotateX?=?.0;double?_rotateY?=?.0;@overrideWidget?build(BuildContext?context)?{return?Transform(
????????transform:?Matrix4.identity()
??????????..rotateX(_rotateX)
??????????..rotateY(_rotateY),
????????alignment:?Alignment.center,
????????child:?Scaffold(
??????????appBar:?AppBar(
????????????title:?Text('3D?變換Demo'),
??????????),
??????????body:?GestureDetector(
????????????onPanUpdate:?(details)?{
??????????????setState(()?{
????????????????_rotateX?+=?details.delta.dy?*?.01;
????????????????_rotateY?+=?details.delta.dx?*?-.01;
??????????????});
????????????},
????????????child:?Container(
??????????????alignment:?Alignment.center,
??????????????color:?Colors.white,
??????????????child:?Text('3D?變換Demo'),
????????????),
??????????),
????????));
??}
}基本已經實現了3D效果,但效果比較生硬,尤其垂直方向旋轉的時候遠點和近點在屏幕上的寬度是一樣,添加近大遠小的效果:Transform(
????transform:?Matrix4.identity()
??????..setEntry(3,?2,?0.001)
??????..rotateX(_rotateX)
??????..rotateY(_rotateY),
??...翻書效果上面的效果類似于翻書的效果。實現的原理:將圖片左右切割為兩部分,兩張圖片共分割為4個新的組件,如下圖,分別為1、2、3、4代碼實現:_child1?=?ClipRect(
??child:?Align(
????alignment:?Alignment.centerLeft,
????widthFactor:?0.5,
????child:?child1,
??),
);
_child2?=?ClipRect(
??child:?Align(
????alignment:?Alignment.centerRight,
????widthFactor:?0.5,
????child:?child1,
??),
);
_child3?=?ClipRect(
??child:?Align(
????alignment:?Alignment.centerLeft,
????widthFactor:?0.5,
????child:?child2,
??),
);
_child4?=?ClipRect(
??child:?Align(
????alignment:?Alignment.centerRight,
????widthFactor:?0.5,
????child:?child2,
??),
);將第一張圖片放在第二種圖片的上面,先旋轉?組件2 從 0度到 90度,然后再旋轉?組件3 從 -90度到0度,代碼實現:Row(
??mainAxisAlignment:?MainAxisAlignment.center,
??children:?[
????Stack(
??????children:?[
????????_child1,
????????Transform(
??????????alignment:?Alignment.centerRight,
??????????transform:?Matrix4.identity()
????????????..setEntry(3,?2,?0.001)
????????????..rotateY(_animation1.value),
??????????child:?_child3,
????????),
??????],
????),
????Container(
??????width:?3,
??????color:?Colors.white,
????),
????Stack(
??????children:?[
????????_child4,
????????Transform(
??????????alignment:?Alignment.centerLeft,
??????????transform:?Matrix4.identity()
????????????..setEntry(3,?2,?0.001)
????????????..rotateY(_animation.value),
??????????child:?_child2,
????????)
??????],
????)
??],
)動畫控制器設置:@overridevoid?initState()?{
??init();
??_controller?=
??????AnimationController(vsync:?this,?duration:?Duration(seconds:?5))
????????..addListener(()?{
??????????setState(()?{});
????????});
??_animation?=?Tween(begin:?.0,?end:?pi?/?2)
??????.animate(CurvedAnimation(parent:?_controller,?curve:?Interval(.0,?.5)));
??_animation1?=?Tween(begin:?-pi?/?2,?end:?0.0).animate(
??????CurvedAnimation(parent:?_controller,?curve:?Interval(.5,?1.0)));
??_controller.forward();super.initState();
}其中 child1, child2為兩種圖片,代碼如下:_FlipUpDemoState(
????Container(
??????width:?300,
??????height:?400,
??????child:?Image.asset('assets/images/b.jpg',
????????fit:?BoxFit.cover,
??????),
????),
????Container(
??????width:?300,
??????height:?400,
??????child:?Image.asset('assets/images/c.jpeg',
????????fit:?BoxFit.cover,
??????),
????))最后生成的效果就是開始的翻書效果。上面是左右翻頁效果,同理換成上下翻頁效果:@override
Widget?build(BuildContext?context)?{return?Scaffold(
????appBar:?AppBar(),
????body:?Column(
??????mainAxisAlignment:?MainAxisAlignment.center,
??????children:?[
????????Stack(
??????????children:?[
????????????_upperChild1,
????????????Transform(
??????????????alignment:?Alignment.bottomCenter,
??????????????transform:?Matrix4.identity()
????????????????..setEntry(3,?2,?0.003)
????????????????..rotateX(_animation1.value),
??????????????child:?_upperChild2,
????????????),
??????????],
????????),
????????SizedBox(
??????????height:?2,
????????),
????????Stack(
??????????children:?[
????????????_lowerChild2,
????????????Transform(
??????????????alignment:?Alignment.topCenter,
??????????????transform:?Matrix4.identity()
????????????????..setEntry(3,?2,?0.003)
????????????????..rotateX(_animation.value),
??????????????child:?_lowerChild1,
????????????)
??????????],
????????)
??????],
????),
??);
}

關注我獲取更多知識或者投稿

總結

以上是生活随笔為你收集整理的滑动翻页效果_Flutter实现3D效果,一个字,炫!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: caoprom在线| 超碰碰碰碰 | 亚洲国产区 | 探花视频在线版播放免费观看 | 天堂а√在线最新版中文在线 | 中国白嫩丰满人妻videos | 热の国产 | 欧美成人精精品一区二区频 | 国产夫妻自拍小视频 | 日韩视频免费在线 | 又黄又刺激的视频 | 狠狠天堂| 欧美夫妇交换xxx | 国产免费无码XXXXX视频 | 青青草十七色 | 黄页在线观看 | 黄色片在线免费 | 麻豆短视频在线观看 | 粉嫩aⅴ一区二区三区四区五区 | 精品无码m3u8在线观看 | 亚洲成人免费在线观看 | av调教| 人物动物互动39集免费观看 | 亚洲AV无码精品自拍 | 日韩视频在线观看 | 91视频毛片| 国产一区二区三区在线免费观看 | 国产欧美一区在线观看 | 亚洲激情视频网站 | 男女啪啪在线观看 | 色九九| 午夜精品久久久久久久第一页按摩 | 丰满女人又爽又紧又丰满 | 国产成人免费电影 | 色天使在线视频 | 国产成年人 | 午夜激情av在线 | 奇米影视首页 | 色综合福利 | 国产免费二区 | 亚洲精品中文字幕乱码无线 | 婷婷综合激情网 | 91一区二区三区在线 | 日本波多野结衣在线 | 伊人天堂网 | av老司机在线观看 | 成人av无码一区二区三区 | 沟厕沟厕近拍高清视频 | 老司机精品在线 | 天天摸天天操天天射 | 福利在线小视频 | 成人91在线 | 91亚瑟视频 | 少妇无码一区二区三区 | 午夜久久网 | 日韩天堂视频 | 国产精品污网站 | 久草视频免费在线播放 | 黄色日批网站 | 日本大胆裸体做爰视频 | 午夜在线观看视频18 | 亚洲精品一区二区三区不卡 | 国产精品视频久久 | 久久免费少妇高潮久久精品99 | 成人激情综合网 | 一级美女黄色片 | 波多野结衣中文字幕一区二区三区 | 精品人妻大屁股白浆无码 | 男女搞黄网站 | 国产99久久九九精品无码免费 | 韩国伦理中文字幕 | 动漫羞羞| 亚洲天天影视 | 制服丝袜av在线播放 | 美女被娇喘视频 | 久久久久人妻精品色欧美 | 高清一区二区三区 | 毛片a片免费看 | 成人在线不卡 | 教练含着她的乳奶揉搓揉捏动态图 | 嫩草视频入口 | 91国偷自产中文字幕久久 | 国产精品久久久久久免费 | 亚洲国产成人精品女人久久 | 中文一区二区 | 精品国产a线一区二区三区东京热 | 国产精品久久久久久久免费看 | 亚洲综合精品国产一区二区三区 | 午夜激情一区二区 | 999久久精品 | 亚色在线 | 在线美女av | 超碰超碰超碰超碰超碰 | 中文字幕国产综合 | 日本免费一区二区在线 | 红桃视频黄色 | 国产91久| 日韩三级不卡 | 国产精华一区二区三区 |