Flutter × OpenHarmony:探索不同宽高比网格布局实现与解析

Flutter for OpenHarmony 网格布局实战:从 GridView 到千级图片性能优化 跨平台 UI 开发中,网格布局承载着大量图标入口与图片内容的展示需求。Flutter 作为自绘引擎驱动的跨端框架,其 GridView 组件基于 Sliver 懒加载机制,能有效控制视口外组件的构建开销,成为大规模网格列表实现的重要基础。在 OpenHarmony 生态逐步完善的背景下,开发者可以借助 Flutter for OpenHarmony 分支复用既有 Dart 代码,在平板等设备上构建图标矩阵与云端图片列表。围绕滚动流畅度与内存占用,本文从构建期优化、图片缓存、缩略图加载、预取策略等维度展开技术 阅读详情

Flutter × OpenHarmony:探索不同宽高比网格布局实现与解析

前言

在跨端开发中,UI 的灵活性和一致性至关重要。尤其在移动端和桌面端同时部署时,如何构建适配不同屏幕尺寸、同时保持网格元素美观的布局,是开发者经常遇到的挑战。本篇文章将以 Flutter × OpenHarmony 为例,演示如何利用 childAspectRatio 构建不同宽高比的网格布局,并提供详细解析,帮助你在跨端应用中轻松实现自适应网格界面。


在这里插入图片描述

背景

在移动和桌面端开发中,网格布局(Grid Layout)被广泛用于展示图片、卡片或功能模块。然而,不同元素可能需要不同的宽高比,例如:

  • 方形 1:1,用于图片或头像
  • 长条形 1:2 或 2:1,用于横向或纵向信息卡
  • 其他比例如 1:1.5、1.5:1、1:3,用于展示统计图或自定义内容

Flutter 提供了 GridView 和 SliverGridDelegateWithFixedCrossAxisCount,并通过 childAspectRatio 参数可以精确控制网格项的宽高比,使布局更加灵活。


Flutter × OpenHarmony 跨端开发介绍

OpenHarmony 是华为开源的跨端操作系统,而 Flutter 是一个跨平台 UI 框架。通过 Flutter + OpenHarmony,开发者可以:

  • 一套代码同时运行在移动端、PC 端和 IoT 端
  • 使用 Flutter 的丰富 Widget 构建界面
  • 通过 OpenHarmony 提供的系统能力,实现原生性能和硬件交互

因此,在 OpenHarmony 上开发 Flutter 应用,不仅保留了 Flutter 的灵活性,还能保证跨端一致性。
在这里插入图片描述


开发核心代码(详细解析)

在这里插入图片描述

下面是实现不同宽高比网格布局的核心代码:

/// 构建不同宽高比的网格布局
/// 展示如何使用 childAspectRatio 控制网格项的宽高比
/// 包含 1:1、1:2、2:1、1:1.5、1.5:1、1:3 等多种比例示例
Widget _buildGridWithAspectRatio(ThemeData theme) {
  final items = [
    {'title': '1:1', 'ratio': 1.0, 'color': Colors.red},
    {'title': '1:2', 'ratio': 0.5, 'color': Colors.orange},
    {'title': '2:1', 'ratio': 2.0, 'color': Colors.yellow},
    {'title': '1:1.5', 'ratio': 0.67, 'color': Colors.green},
    {'title': '1.5:1', 'ratio': 1.5, 'color': Colors.blue},
    {'title': '1:3', 'ratio': 0.33, 'color': Colors.purple},
  ];
  
  return Container(
    decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(12),
      color: theme.colorScheme.surfaceContainerHighest,
    ),
    padding: const EdgeInsets.all(8),
    child: GridView.builder(
      shrinkWrap: true,
      physics: const NeverScrollableScrollPhysics(),
      gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
        crossAxisCount: 3,
        mainAxisSpacing: 8,
        crossAxisSpacing: 8,
      ),
      itemCount: items.length,
      itemBuilder: (context, index) {
        final item = items[index];
        return Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(8),
            color: (item['color'] as Color).withAlpha(50),
          ),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text(
                item['title'] as String,
                style: theme.textTheme.bodyMedium?.copyWith(
                  fontWeight: FontWeight.bold,
                ),
              ),
              const SizedBox(height: 4),
              Text(
                '比例: ${item['ratio']}',
                style: theme.textTheme.bodySmall?.copyWith(
                  color: theme.colorScheme.onSurfaceVariant,
                ),
              ),
            ],
          ),
        );
      },
    ),
  );
}

代码解析

  1. 数据定义
final items = [
  {'title': '1:1', 'ratio': 1.0, 'color': Colors.red},
  ...
];
  • 每个元素包含标题 title、宽高比 ratio 和颜色 color
  • ratio 用于设置 childAspectRatio,控制网格项宽高比
  1. 外层容器
Container(
  decoration: BoxDecoration(
    borderRadius: BorderRadius.circular(12),
    color: theme.colorScheme.surfaceContainerHighest,
  ),
  padding: const EdgeInsets.all(8),
  ...
)
  • 使用圆角和背景色美化网格布局
  • padding 确保网格项不紧贴边缘
  1. GridView 构建
GridView.builder(
  shrinkWrap: true,
  physics: const NeverScrollableScrollPhysics(),
  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 3,
    mainAxisSpacing: 8,
    crossAxisSpacing: 8,
  ),
  ...
)
  • crossAxisCount: 3 表示每行显示 3 个网格
  • mainAxisSpacing 和 crossAxisSpacing 控制间距
  • shrinkWrap: true 避免 GridView 无限占用空间
  • NeverScrollableScrollPhysics() 禁止滚动,适合嵌套布局
  1. 网格项渲染
Container(
  decoration: BoxDecoration(
    borderRadius: BorderRadius.circular(8),
    color: (item['color'] as Color).withAlpha(50),
  ),
  child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: [
      Text(item['title'] as String, ...),
      const SizedBox(height: 4),
      Text('比例: ${item['ratio']}', ...),
    ],
  ),
)
  • 每个网格项使用圆角和半透明背景
  • Column 垂直居中显示标题和比例信息

⚠️ 注意:如果要让不同宽高比生效,需要在 SliverGridDelegateWithFixedCrossAxisCount 中增加 childAspectRatio,这里可以根据 items[index]['ratio'] 动态设置:

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  crossAxisCount: 3,
  mainAxisSpacing: 8,
  crossAxisSpacing: 8,
  childAspectRatio: items[index]['ratio'] as double,
),

这样,每个网格项都能根据设定比例自动调整宽高。


在这里插入图片描述

心得

  • childAspectRatio 是控制网格元素宽高比的关键参数
  • 在跨端开发中,Flutter + OpenHarmony 的组合非常适合快速构建自适应布局
  • 对不同比例元素的可视化展示,有助于 UI 设计和业务功能的统一

总结

本文通过 Flutter × OpenHarmony 演示了如何构建不同宽高比的网格布局,并提供详细解析。通过 childAspectRatio,开发者可以轻松控制网格项的宽高比,适配各种展示需求。在实际项目中,这种方式可以显著提升 UI 灵活性和跨端一致性,为多端应用开发提供实用的解决方案。
通过本篇实践,我们掌握了在 Flutter × OpenHarmony 跨端开发中,利用 childAspectRatio 精准控制网格布局宽高比的技巧。无论是方形、长条形还是其他自定义比例的网格项,都能轻松实现自适应排布。这样的布局方法不仅提升了界面美观性,也增强了跨端 UI 的一致性,为多端应用开发提供了高效、灵活的解决方案。未来在实际项目中,可根据业务需求进一步扩展网格样式,实现更加丰富的展示效果。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.youkuaiyun.com

OpenHarmony上Flutter网格性能优化实战 跨平台开发框架Flutter凭借高效的渲染引擎与组件化架构,成为移动应用开发的热门技术。其网格组件(GridView)通过同时利用水平和垂直空间,大幅提升信息展示密度,在图片浏览、商品陈列等场景中广泛应用。然而在OpenHarmony生态下,RK3568等嵌入式设备的性能瓶颈,使得网格滚动面临图片解码慢、组件重建频繁等挑战。从环境搭建、GridView三种构造方式的选型,到图片缩略图、缓存策略与布局优化,可以构建起一套完整的高性能网格方案。实测通过稳定Key、合理设置缓存上限与childAspectRati 阅读详情

相关推荐

Windows 11 下 WSL 离线安装 Ubuntu 22.04 保姆级教程(国内镜像加速版)

本文提供了一份针对中国地区用户的Windows 11下WSL离线安装Ubuntu 22.04的详细教程。通过使用国内镜像源加速下载安装包,并配合PowerShell命令完成部署,有效解决了官方商店下载缓慢的问题。教程涵盖环境准备、离线包获取、安装初始化及安装后的关键优化配置,帮助用户快速搭建高效的Linux开发环境。

weixin_28452161的博客 1378

GridAspectExplorer:Flutter × Harmony6.0 构建多宽高比网格布局实战

本文介绍了如何在Flutter × Harmony6.0环境下实现多种宽高比的网格布局。通过GridAspectExplorer示例,详细讲解了利用GridView的childAspectRatio属性和AspectRatio组件动态控制网格项比例的方法,支持1:1、1:2、2:1等多种比例。文章还分享了跨端开发经验,包括PC与移动端适配技巧、视觉优化建议等。这套方案能帮助开发者快速构建灵活高效的网格界面,实现一次开发多端运行的效果。

一键难忘的博客 1万+

保姆级教程:用NovAtel Inertial Explorer 8.7搞定GNSS/INS紧组合后处理(附避坑指南)

本文提供NovAtel Inertial Explorer 8.7的GNSS/INS紧组合后处理全流程教程,涵盖环境准备、数据转换、基站坐标解算及紧组合处理等关键步骤。特别针对零基础用户,分享实用技巧和常见陷阱,帮助高效完成高精度组合导航数据处理,适用于测绘、自动驾驶等领域。

weixin_42614269的博客 283

Flutter与OpenHarmony网格布局:不同宽高比混排实战与避坑指南

在移动端界面设计中,网格布局是最常用的信息组织方式,而宽高比控制则是实现视觉一致性的核心难点。网格系统本质上是先按列切分容器宽度,再通过比例反推每行高度,从而让1:1、16:9、3:4等不同尺寸的卡片在同一个容器内和谐混排。理解这一基础原理,开发者就能应对电商首页、内容信息流、工具类宫格等典型场景。本文聚焦Flutter与OpenHarmony两大跨端框架,对比GridView、SliverGridDelegate与ArkUI Grid、GridRow的尺寸模型差异,梳理childAspectRatio、c

weixin_29017445的博客 322

Keil5与ARM编译器V5安装指南:从下载到配置全流程解析

本文提供Keil5与ARM Compiler V5的完整安装与配置指南。针对新版Keil5默认不包含V5编译器导致老工程编译失败的问题,详细解析了从软件下载、授权管理到获取并正确安装ARM Compiler V5(AC5)的全流程,确保开发者能顺利搭建兼容老项目的稳定开发环境。

weixin_29158047的博客 875

Flutter × OpenHarmony 跨端网格布局实践:自定义列数的GridView实现

本文介绍了在Flutter与OpenHarmony跨端开发中实现自定义列数网格布局的方法。通过GridView.builder和SliverGridDelegateWithFixedCrossAxisCount,开发者可以灵活控制网格列数、间距和宽高比,同时保证UI在不同平台的一致性。文章详细解析了核心代码实现,包括数据生成、容器样式、滚动控制等关键点,并分享了动态列数调整、跨端适配等实践经验。这种组件化设计提高了开发效率和代码复用性,为构建复杂UI提供了基础。

博客 751

推荐算法之Thompson(汤普森)采样

如果想理解汤普森采样算法,就必须先熟悉了解贝塔分布。 一、Beta(贝塔)分布 Beta分布是一个定义在[0,1]区间上的连续概率分布族,它有两个正值参数,称为形状参数,一般用α和β表示,Beta分布的概率密度函数形式如下: 这里的Γ表示gamma函数。 Beta分布的均值是: 方差: ...

weixin_30508241的博客 4259

Flutter与OpenHarmony动态网格布局实践指南

网格布局作为现代UI设计的核心组件,通过行列系统实现元素的精准排布,其原理基于视口分割与动态尺寸计算。在跨平台开发中,响应式网格能显著提升界面适配能力,尤其适用于电商、社交等需要展示多样化内容的场景。Flutter通过SliverGridDelegate实现动态宽高比控制,而OpenHarmony则采用类似CSS Grid的12列布局系统。本文以媒体卡片展示为例,详解如何运用AspectRatio组件与权重算法,在两种框架中实现混合比例网格布局,并分享性能优化与跨平台适配的工程实践。

weixin_30402231的博客 288

米哈游 AI产品经理面试题精选:10道高频考题+答案解析(附PDF)

米哈游是全球知名游戏开发商,以《原神》《崩坏》系列著称,专注二次元文化与AI技术创新。本文整理了10道AI产品经理面试题,涵盖Transformer架构、智能NPC设计、机器学习应用、AIGC产品规划等核心领域。题目既考察技术理解(如RAG原理、多模态模型),又关注产品落地(游戏平衡性优化、伦理安全),同时强调跨团队协作能力。参考答案均结合米哈游业务场景,体现技术驱动与玩家体验并重的产品思维,展现AI在游戏行业的创新应用前景。

ZHHHHH15的博客 683

【自适应滤波】自适应UKF,基于新息自适应调节Q和R,场景为雷达跟踪与滤波、MATLAB实现

本文提出了一种基于新息协方差匹配的自适应UKF(CM-AUKF)算法,用于解决噪声统计未知或时变场景下的目标跟踪问题。通过实时调整过程噪声协方差Q和观测噪声协方差R,CM-AUKF显著提升了跟踪精度和稳定性。仿真结果表明,相比传统UKF,CM-AUKF在位置和速度估计误差上分别降低了约50%和30%,且无需人工调参。该算法适用于无人机导航、雷达跟踪等动态环境,MATLAB代码可直接运行复现结果。自适应曲线显示算法能有效收敛到真实噪声参数,验证了其自适应能力。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 330

Flutter for OpenHarmony 实战之基础组件:第十二篇 GridView 网格布局详解

在 App 开发中,除了线性的列表,网格布局是展示图片、商品和功能的最佳方式。本文将全方位解析 Flutter 的 GridView 组件,从基础的固定列数网格,到高性能的动态懒加载,最后教你如何利用 LayoutBuilder 在 OpenHarmony 平板与折叠屏上实现自适应响应式网格。

好代码自己会说话,烂代码才需要注释来圆谎 1万+

WorkBuddy 连接百度网盘:能查能上传,但别指望 AI 帮你下载

本文介绍了如何通过WorkBuddy连接百度网盘实现文件管理功能。首先需要在百度开放平台创建应用并获取AppKey等凭证,然后通过拼接授权URL获取Access Token并填入WorkBuddy。实际测试表明,该连接器支持查看目录结构、搜索文件及上传文档,但无法实现文件下载和创建分享链接,原因是百度网盘MCP Server未提供相关接口。使用前需明确功能限制,该方案适合需要远程查阅网盘内容但不涉及下载的场景。

u011186532的专栏 1994

Flutter for OpenHarmony:GridView — 网格布局实现

本文将系统解析 `GridView` 的核心用法,深入对比 `GridView.count` 与 `GridView.builder`,详解 `crossAxisCount` 与 `childAspectRatio` 的控制逻辑,分析其与 `ListView` 的性能差异,并重点提供在 OpenHarmony 设备上的**屏幕尺寸适配策略**,帮助开发者构建响应式、高性能的网格 UI。

2501_93030156的博客 677

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Flutter for OpenHarmony 实战: 实现一些简单的多边形绘制

本项目通过 Flutter 的自定义绘制能力,实现了一套功能完整、设计优雅的形状组件库。项目代码虽然量不大,但涵盖了 Flutter 自定义绘制的核心知识点,包括 CustomPaint 的使用、CustomPainter 的实现、Canvas 绘图 API、Path 路径操作、画笔配置等。同时,项目在组件设计上遵循了 Flutter 的最佳实践,如无状态优先、组合优于继承、细粒度重绘控制等。从技术深度来看,项目展示了 Flutter 2D 绘制系统的基本工作原理。

2301_79516858的博客 450

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

基于 Flutter × OpenHarmony 的驾照学习助手:构建学习资源区域实战解析

本文介绍了基于Flutter和OpenHarmony的驾照学习助手开发,重点解析了学习资源区域的实现。通过Flutter的跨端优势和OpenHarmony的适配能力,可实现一次开发多端运行。核心代码采用GridView构建3列网格布局,包含视频教程、模拟题库等6类资源卡片,每项包含图标、标题和描述信息。该设计兼顾信息展示与用户体验,采用圆角卡片、色彩区分和自适应布局,为驾驶学员提供直观高效的学习界面。

博客 710

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Flutter for OpenHarmony:Flutter 网格布局利器GridView 组件详解

在移动应用开发的视觉表达中,如果说 ListView 是“线性信息的高速公路”,那么 GridView 就是“视觉内容的陈列橱窗”。无论是相册浏览、商品展示、应用图标墙、视频封面矩阵,还是设置快捷入口、游戏关卡选择、音乐专辑墙——只要涉及二维网格化的内容排布,GridView 几乎都是不二之选。

2503_93740796的博客 931

Flutter与OpenHarmony融合实现高性能卡片网格布局

跨平台UI开发中,卡片式布局是提升用户体验的关键技术。通过Flutter框架的跨平台特性与OpenHarmony的分布式能力深度整合,开发者可以构建高性能的卡片网格系统。这种方案利用Flutter的Skia渲染引擎与OpenHarmony的ACE框架协同工作,实现原生级性能表现。在电商类App等需要复杂布局的场景中,该技术组合可显著提升滚动流畅度并降低内存占用。特别是结合OpenHarmony的分布式数据管理能力,还能实现多设备间的布局同步与资源共享,为跨端开发提供新的可能性。

weixin_42662293的博客 170

Flutter for OpenHarmony 实战:基于HarmonyOS API 24 卡片布局与阴影效果

本项目实现了一套功能完善的卡片组件库,包括基础卡片、带图卡片和卡片网格布局三个组件,覆盖了卡片布局的主要使用场景。项目深入探索了 Flutter 中阴影、圆角、边框等视觉效果的实现方式,展示了如何通过 Container 的 BoxDecoration 创造丰富的视觉效果。在组件设计方面,项目体现了良好的组合式架构思想。基础卡片组件提供核心的视觉效果能力,带图卡片组件通过组合基础卡片构建特定的内容结构,卡片网格组件提供批量布局能力。

2301_79516858的博客 411

Flutter for OpenHarmony 实战:GridView.builder 构建器网格详解

本文系统介绍了在OpenHarmony平台上使用GridView.builder的最佳实践。通过动态列数适配、瀑布流实现和内存优化等方案,开发者可以构建高性能的网格布局应用。性能优化:必须设置合理的cacheExtent值,使用平台特定的图片缓存组件布局适配:采用响应式设计策略,考虑折叠屏设备的特殊场景滚动体验:使用OhosBouncingScrollPhysics保持原生滚动特性内存管理:在大型网格中禁用自动保活机制集成鸿蒙分布式数据管理适配方舟编译器优化AOT编译。

摘星编程的博客 969

鸿蒙设备上Flutter网格布局实战:GridView与SliverGrid选型与调优

在跨端应用开发中,网格布局是内容展示的常见形态,尤其当目标设备从手机扩展到平板、车机等宽屏场景时,布局的适配性和滚动性能成为工程落地的关键。Flutter作为多端一致UI框架,在OpenHarmony生态中同样面临网格布局的选型与优化问题。GridView凭借开箱即用的特性适合独立简单页面,而SliverGrid则能嵌入CustomScrollView实现复杂联动滚动与精细缓存控制。正确理解childAspectRatio、cacheExtent、间距与安全区等参数的调整逻辑,可有效解决宽屏设备上卡片拉伸、

weixin_29008691的博客 235

HarmonyOS 6.1 实战:Flutter for OpenHarmony 实战:共享元素动画

用于控制动画的播放、暂停、反向等操作Tween:定义动画的起始值和结束值:为动画添加曲线效果,使动画更加自然Transform:用于实现缩放、旋转等变换效果技术原理:通过Hero组件和相同的tag值,实现不同视图之间元素的平滑过渡动画。应用场景:适用于需要在不同状态或页面之间创建流畅过渡效果的场景,如图片查看、详情展示等。实现要点使用相同的tag值标识需要共享的元素确保Hero组件在两个状态下都存在可以自定义过渡动画的样式和持续时间。

xiaoqi922的博客 258

Flutter for OpenHarmony 实战:GridView 网格视图详解

GridView 是 Flutter 框架中提供的滚动网格控件,专为二维数据集设计。高信息密度:在有限屏幕空间内展示更多内容项(如商品卡片)响应式布局:自动适应不同屏幕尺寸和方向变化滚动优化:基于 Sliver 机制实现懒加载,避免内存溢出跨平台一致性:在 OpenHarmony 设备上保持与 Android/iOS 一致的 UI 行为电商应用的商品分类网格相册应用的图片瀑布流智能家居设备的图标矩阵新闻应用的卡片式内容墙。

Abin 336

Flutter与OpenHarmony实现高性能跨平台卡片布局

跨平台开发框架Flutter通过自建渲染引擎实现高性能UI绘制,结合OpenHarmony的分布式能力可进一步提升移动端应用性能。在卡片式布局场景中,关键技术点包括网格布局优化、硬件加速渲染和跨设备状态同步。Flutter的Skia引擎直接操作底层图形接口,避免了传统跨平台方案中的性能损耗;而OpenHarmony的分布式软总线技术则实现了多设备间的无缝流转。这种技术组合特别适合电商、新闻等需要展示大量卡片的场景,实测显示滚动流畅度可提升40%,内存占用降低28%。通过共享内存和事件总线等进阶技巧,开发者能

weixin_32924297的博客 237

HarmonyOS 6 ArkUI - Flutter for OpenHarmony 实战:共享元素动画

技术原理:通过Hero组件和相同的tag值,实现不同视图之间元素的平滑过渡动画。应用场景:适用于需要在不同状态或页面之间创建流畅过渡效果的场景,如图片查看、详情展示等。实现要点使用相同的tag值标识需要共享的元素确保Hero组件在两个状态下都存在可以自定义过渡动画的样式和持续时间。

xiaoqi922的博客 333

Flutter for OpenHarmony:链迹 - 基于Flutter的会话级快速链接板极简实现方案

Flutter for OpenHarmony:链迹 - 基于Flutter的会话级快速链接板极简实现方案

2501_94387184的博客 641
上一篇: Flutter × OpenHarmony 跨端网格布局实践:自定义列数的GridView实现
下一篇: 基于 Flutter × OpenHarmony 的卡片网格布局实战
放风铃的兔子
放风铃的兔子 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄3年 1万+粉丝 1762原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放风铃的兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值