Flutter 使用pageview无缝隙自动轮播教程

这篇具有很好参考价值的文章主要介绍了Flutter 使用pageview无缝隙自动轮播教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导入要使用的轮播图片

 List<String> imagesa = [
    "assets/images/car_qidian.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg",
    "assets/images/car_bg.jpg"
  ];

声明变量

late PageController _controller;
Timer? _timer,

  //背景图动画
  void startTimer() {
    _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
      if (_controller.hasClients) {     
        if (_controller.page!.round() >= imagesa.length - 1) {      
          _controller.jumpToPage(0);
        } else {
          _controller.nextPage(
            duration: const Duration(seconds: 1),
            curve: Curves.linear,
          );
        }
      }

    });
  }

  void pauseTimer() {
    _timer?.cancel();
  }

  void restartTimer() {
    _timer?.cancel();
    startTimer();
  }

  // 背景使用
  void _onPageChanged() {
    int newIndex = _controller.page!.round() % imagesa.length;
    if (newIndex != _currentPage) {
      setState(() {
        _currentPage = newIndex;
      });
    }
  }

然后在initState里面初始化一下

@override
  void initState() {
    super.initState();
    startTimer(); 
}

在dispose里面去掉

  @override
  void dispose() {
    _controller.dispose();
    _timer?.cancel();
    super.dispose();
  }

最后在你需要的地方加入下面代码就行了文章来源地址https://www.toymoban.com/news/detail-733079.html

//背景图
                SizedBox(
                  height: 750.h,
                  child: PageView.builder(
                    physics: const NeverScrollableScrollPhysics(),
                    controller: _controller,
                    itemBuilder: (context, index) {
                      final imageIndex = index % imagesa.length;
                      return Image.asset(
                        imagesa[imageIndex],
                        width: double.infinity,
                        height: 750.h,
                        fit: BoxFit.fitHeight,
                        gaplessPlayback: true,
                      );
                    },
                  ),
                ),

到了这里,关于Flutter 使用pageview无缝隙自动轮播教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter轮播图Banner

    使用插件:flutter_swiper 实现轮播图 pubspec.yaml  增加 :flutter_swiper : ^lastest_version 在项目文件夹下打开命令行执行:flutter packages get 安装插件 home_page.dart中使用swiper 程序运行:先启动虚拟设备后,执行命令flutter fun 执行结果:

    2024年01月20日
    浏览(31)
  • 【Android】使用ViewPager2实现轮播图效果,手动/自动轮播图

    这里使用Gilde进行加载图片:Glide 使用Gilde可以加载网络图片还可以提高图片加载性能。 接下来新建一个子布局item_image,加载viewPage2的子布局。 ViewPage2就是使用recyclerView实现的,所以这里使用方法其实类似。 这里直接继承RecyclerView.Adapter即可,代码很简单不必多说。 创建一个

    2024年02月03日
    浏览(37)
  • flutter getx 简单使用教程

    所以Flutter使用GetX真的很不错 为什么说什么GetX好用呢? 1、依赖注入 GetX是通过依赖注入的方式,存储相应的XxxGetxController;已经脱离了InheritedWidget那一套玩法,自己手动去管理这些实例,使用场景被大大拓展 2、跨页面交互 这绝对是GetX的一个优点!对于复杂的生产环境,跨

    2024年02月08日
    浏览(43)
  • 英雄联盟轮播图自动轮播

    六月过去了,七月还会远吗?不知不觉到了六月底的最后一天。你好,七月! 大家好,我是小陈陈呀,上次写了一篇英雄联盟轮播图手动轮播,当天晚上有很多大朋友小朋友私信小陈陈:可以在上次手动轮播的基础上,实现自动轮播的话,那样会不会更炫酷呢?炫不炫酷我不

    2023年04月08日
    浏览(34)
  • Flutter——最详细(Map)使用教程

    键值对的集合,您可以使用其关联的键从中检索值。 普通的 HashMap 是无序的(不保证顺序), LinkedHashMap 按键插入顺序迭代,而像 SplayTreeMap 这样的排序映射按排序顺序迭代键。 1,添加元素 addEntries() 2,更新组元素 update() 3,更新所有元素的值 updateAll() 4,删除指定的元素

    2024年02月06日
    浏览(30)
  • Flutter——最详细(Scaffold)使用教程

    相当于界面的主体(类似于安卓最外层PhoneWindow),组件的展示都必须依附于它。 每一个界面都是脚手架,通过它来进行架构实现,优美的布局效果。 属性 作用 appBar 顶部的标题栏 body 显示整体布局 floatingActionButton 右下角按钮 floatingActionButtonLocation 按钮的位置 floatingActionB

    2024年02月06日
    浏览(29)
  • Flutter——最详细(CustomScrollView)使用教程

    创建一个 [ScrollView],该视图使用薄片创建自定义滚动效果。 [SliverList],这是一个显示线性子项列表的银子列表。 [SliverFixedExtentList],这是一种更高效的薄片,它显示沿滚动轴具有相同范围的子级的线性列表。 [SliverGrid],这是一个显示子项 2D 数组的薄片。 [SliverPadding],这是

    2024年01月22日
    浏览(31)
  • Flutter——最详细(NavigationRail)使用教程

    一个 Material Design 小部件,旨在显示在应用程序的左侧或右侧,以便在少量视图(通常在三到五个视图之间)之间导航。 通过Row属性,左侧或右侧菜单栏按钮 属性 作用 onDestinationSelected 选择索引回调监听器 selectedIndex 目前选定目的地的索引 destinations 存放菜单按钮 backgroundC

    2024年02月16日
    浏览(32)
  • Flutter——最详细(NavigationBar)使用教程

    Material 3 导航栏组件! 导航栏提供了一种持久且便捷的方式来在应用程序的主要目的地之间进行切换。 底部菜单栏模块 属性 作用 onDestinationSelected 选择索引回调监听器 selectedIndex 目前选定目的地的索引 destinations 存放菜单按钮 backgroundColor 导航栏背景色 elevation 海拔高度 heigh

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包