You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Flutter添加Rive动画后Mat2D隐式复制赋值运算符已弃用错误?

Flutter Windows编译Rive动画启动页报错解决方案

添加Rive动画到Flutter应用启动页后,Windows编译出现以下错误:

C:\Users\d\Desktop\Flutter Real Projects\weather_app\windows\flutter\ephemeral.plugin_symlinks\rive_common\windows..\ios\rive-cpp\include\rive/math/mat2d.hpp(17,5): error : definition of implicit copy assignment operator for 'Mat2D' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy] [C:\Users\d\Desktop\Flutter Real Projects\weather_app\build\windows\plugins\rive_common\rive_common_plugin.vcxproj]
Exception: Build process failed.

使用的启动页代码如下:

import 'package:animated_splash_screen/animated_splash_screen.dart';
import 'package:flutter/material.dart';
import 'package:rive/rive.dart';
import 'package:weather_app/pages/home_page.dart';


class Splash extends StatelessWidget {
  const Splash({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.red,
      child: AnimatedSplashScreen(
        splashTransition: SplashTransition.fadeTransition,
        backgroundColor: Colors.amber,
        splash: const RiveAnimation.asset('assets/images/anim.riv'),
        nextScreen: const HomePage(),
      ),
    );
  }
}

解决方案

  • 升级Rive依赖版本:这个报错是rive-cpp底层的编译警告被触发为错误,新版本的rive包已经修复了该问题。在pubspec.yaml中将rive依赖更新到最新稳定版,示例:

    dependencies:
      rive: ^0.12.0 # 替换为当前最新稳定版本
    

    执行flutter pub get更新依赖后重新编译。

  • 禁用Windows编译的-Wdeprecated-copy警告:如果暂时无法升级依赖,可修改Windows项目的编译配置忽略该警告:

    1. 打开项目路径下的build/windows/plugins/rive_common/rive_common_plugin.vcxproj文件
    2. 在<ClCompile>节点中添加忽略警告的参数,修改后示例:
      <ClCompile>
        <WarningLevel>Level3</WarningLevel>
        <AdditionalOptions>$(AdditionalOptions) -Wno-deprecated-copy</AdditionalOptions>
      </ClCompile>
      
    3. 保存文件后重新执行flutter run -d windows
  • 替换启动页实现方式:若上述方法无效,可弃用animated_splash_screen包,手动实现Rive动画启动页跳转,避免潜在冲突:

    import 'package:flutter/material.dart';
    import 'package:rive/rive.dart';
    import 'package:weather_app/pages/home_page.dart';
    
    class Splash extends StatefulWidget {
      const Splash({super.key});
    
      @override
      State<Splash> createState() => _SplashState();
    }
    
    class _SplashState extends State<Splash> {
      @override
      void initState() {
        super.initState();
        // 可根据动画播放状态调整跳转时机,这里用固定延迟示例
        Future.delayed(const Duration(seconds: 3), () {
          Navigator.pushReplacement(context, MaterialPageRoute(builder: (_) => const HomePage()));
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.amber,
          body: Center(
            child: RiveAnimation.asset('assets/images/anim.riv'),
          ),
        );
      }
    }
    

内容的提问来源于stack exchange,提问作者borhanedine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:51:16