Flutter 3D模型展示插件flutter_3d_viewer的使用

⚡flutter_3d_viewer #

自定义的小部件和组件,可立即在您的项目中使用!

🎖安装 #

dependencies:
  flutter_3d_viewer: ^<latest_version>

❤喜欢这个工具?在这里捐赠

🚀想了解更多关于Flutter的知识?查看这个链接!

💥通过LinkedIn联系我 关注这里

🐛 Bug/请求 #

如果您遇到任何问题,请随时打开一个issue。如果您觉得库缺少功能,请在Github上提出请求,我会考虑实现它。Pull request也非常欢迎。

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_3d_viewer/flutter_3d_viewer.dart'; // 导入flutter_3d_viewer

void main() { runApp(const MyApp()); }

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

@override Widget build(BuildContext context) { return MaterialApp( title: ‘Flutter Demo’, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: const MyHomePage(title: ‘Flutter Demo Home Page’), ); } }

class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title});

final String title;

@override State<MyHomePage> createState() => _MyHomePageState(); }

class _MyHomePageState extends State<MyHomePage> { int _counter = 0;

void _incrementCounter() { setState(() { _counter++; }); }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( ‘你已经按下了按钮多少次:’, ), Text( ‘$_counter’, style: Theme.of(context).textTheme.headlineMedium, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: ‘增加’, child: const Icon(Icons.add), ), ); } }

使用3D视图器 #

要在应用中使用3D视图器,首先需要导入flutter_3d_viewer库。然后可以在MyHomePage类中添加一个ThreeDViewer小部件。

示例如下:

import 'package:flutter/material.dart';
import 'package:flutter_3d_viewer/flutter_3d_viewer.dart';

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              '你已经按下了按钮多少次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
            ThreeDViewer(
              model: Model(
                sourceType: SourceType.file,
                path: 'assets/models/your_model.obj', // 替换为你的模型路径
              ),
              width: 300,
              height: 300,
              backgroundColor: Colors.white,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

在这个示例中,我们添加了一个ThreeDViewer小部件来显示3D模型。确保将模型文件放在项目的assets目录下,并在pubspec.yaml文件中正确配置。

flutter:
  assets:
    - assets/models/your_model.obj

这样就可以在应用中成功加载并显示3D模型了。


更多关于Flutter 3D模型展示插件flutter_3d_viewer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter 3D模型展示插件flutter_3d_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_3d_viewer 是一个用于在 Flutter 应用中展示 3D 模型的插件。它允许你将 3D 模型(通常为 .glb.gltf 格式)嵌入到你的应用中,并提供交互功能,如旋转、缩放和平移。以下是如何使用 flutter_3d_viewer 的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_3d_viewer 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_3d_viewer: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 flutter_3d_viewer 包:

import 'package:flutter_3d_viewer/flutter_3d_viewer.dart';

3. 使用 Flutter3DViewer 组件

你可以使用 Flutter3DViewer 组件来展示 3D 模型。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:flutter_3d_viewer/flutter_3d_viewer.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('3D Model Viewer'),
        ),
        body: Center(
          child: Flutter3DViewer(
            src: 'assets/models/your_model.glb', // 3D模型文件路径
            backgroundColor: Colors.white,
            enablePan: true,
            enableRotation: true,
            enableZoom: true,
          ),
        ),
      ),
    );
  }
}

4. 添加 3D 模型文件

将你的 3D 模型文件(如 .glb.gltf 格式)放置在 assets 文件夹中,并在 pubspec.yaml 文件中声明:

flutter:
  assets:
    - assets/models/your_model.glb

5. 运行应用

现在你可以运行你的 Flutter 应用,并看到 3D 模型在应用中展示出来。你可以通过触摸屏幕来旋转、缩放和平移模型。

6. 高级配置

Flutter3DViewer 组件提供了多个可选参数来定制你的 3D 查看器:

  • src: 3D 模型文件的路径。
  • backgroundColor: 查看器的背景颜色。
  • enablePan: 是否允许平移模型。
  • enableRotation: 是否允许旋转模型。
  • enableZoom: 是否允许缩放模型。
  • autoPlay: 是否自动播放动画(如果模型包含动画)。
  • autoRotate: 是否自动旋转模型。
  • cameraControls: 是否显示相机控件。

7. 处理动画

如果 3D 模型包含动画,你可以使用 Flutter3DViewerplayAnimationstopAnimation 方法来控制动画的播放和停止。

Flutter3DViewer(
  src: 'assets/models/your_model.glb',
  autoPlay: true, // 自动播放动画
);

8. 处理模型加载状态

你可以使用 onLoadingonLoaded 回调来处理模型加载的状态:

Flutter3DViewer(
  src: 'assets/models/your_model.glb',
  onLoading: () {
    print('模型加载中...');
  },
  onLoaded: () {
    print('模型加载完成');
  },
);

9. 处理错误

如果模型加载失败,你可以使用 onError 回调来处理错误:

Flutter3DViewer(
  src: 'assets/models/your_model.glb',
  onError: (error) {
    print('模型加载失败: $error');
  },
);

10. 自定义控件

你可以通过 cameraControls 参数来控制是否显示默认的相机控件,或者使用自定义控件来替代。

Flutter3DViewer(
  src: 'assets/models/your_model.glb',
  cameraControls: false, // 隐藏默认控件
);

11. 处理手势

Flutter3DViewer 默认支持手势操作(如旋转、缩放、平移)。你可以通过 enablePan, enableRotation, 和 enableZoom 参数来控制这些手势的启用和禁用。

Flutter3DViewer(
  src: 'assets/models/your_model.glb',
  enablePan: true,
  enableRotation: true,
  enableZoom: true,
);
回到顶部