开篇寄语
伯衡君发现很多App会有首页的轮播图,Flutter制作的App自然也有这个组件,不过这个需要安装第三方支撑库,实现图片的轮播效果,这个组件的名称是carousel_slider,可以从pub.dev上找到资料,本篇就是以这个组件为实例,来实现图片轮播效果。
相关内容
- 《Flutter给文本输入框添加实时计算输入字母的长度》
- 《Flutter制作弹出框背景是磨砂特效Blur Effects的例子》
- 《Flutter有关ColorFiltered一些有趣实例,图片变色大不同》
- 《Flutter制作自己的第一个全平台APP学习之实用功能篇》
- 《Flutter制作自己的第一个全平台APP学习之Widgets篇》
内容详情
以下内容大多是更改lib下的main.dart文件内容,删掉里面的内容,复制粘贴代码,开启调试就可以出现了。
想要实现图片轮播,可以使用carousel_slider这个组件,安装和使用文档,可以参看这个地址:carousel_slider,安装完成后,试举例如下:
import 'package:flutter/material.dart'; import 'package:carousel_slider/carousel_slider.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( // Remove the debug banner debugShowCheckedModeBanner: false, title: 'Flutter Demo', home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { final List data = [ { "title": "Image 1", "url": "https://images.pexels.com/photos/1525043/pexels-photo-1525043.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, { "title": "Image 2", "url": "https://images.pexels.com/photos/1525042/pexels-photo-1525042.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, { "title": "Image 3", "url": "https://images.pexels.com/photos/1525041/pexels-photo-1525041.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, { "title": "Image 4", "url": "https://images.pexels.com/photos/1525044/pexels-photo-1525044.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, { "title": "Image 5", "url": "https://images.pexels.com/photos/1525045/pexels-photo-1525045.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, { "title": "Image 6", "url": "https://images.pexels.com/photos/1525046/pexels-photo-1525046.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" }, ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: Column( children: [ CarouselSlider( options: CarouselOptions( autoPlay: true, autoPlayInterval: Duration(seconds: 2), autoPlayAnimationDuration: Duration(milliseconds: 400), height: 300, ), items: data.map((item) { return GridTile( child: Image.network(item["url"], fit: BoxFit.cover), footer: Container( padding: EdgeInsets.all(15), color: Colors.black54, child: Text( item["title"], style: TextStyle(color: Colors.white, fontSize: 20), textAlign: TextAlign.right, )), ); }).toList(), ), SizedBox(height: 30), Text( 'Other Content', style: TextStyle( fontSize: 24, ), textAlign: TextAlign.center, ), ], ), ); } }
生成效果如下图所示:
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号