Flutter温度监控插件thermion_flutter的使用

Flutter温度监控插件thermion_flutter的使用

简介

thermion_flutter 是一个用于在 Flutter 应用中实现 3D 渲染功能的插件。它基于 Filament 引擎,支持跨平台开发,并且可以轻松集成到现有的 Flutter 项目中。

下图展示了 thermion_flutter 的 logo:

Thermion Logo

以下是获取更多帮助的资源:

使用步骤

1. 添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  thermion_flutter: ^x.x.x  # 替换为最新版本号

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

2. 创建基本应用结构

创建一个简单的 Flutter 应用,并初始化 ThermionViewer 对象。

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

import 'package:vector_math/vector_math_64.dart' as v;
import 'dart:math';

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

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

  [@override](/user/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'),
    );
  }
}

3. 初始化和加载资源

MyHomePage 中初始化 ThermionViewer 并加载 3D 模型和天空盒。

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> {
  bool _loaded = false;
  ThermionViewer? _thermionViewer;

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  // 加载资源
  Future _load() async {
    var viewer = await ThermionFlutterPlugin.createViewer();
    _thermionViewer = viewer;

    // 加载天空盒
    _thermionViewer!.loadSkybox("assets/default_env_skybox.ktx");

    // 加载 GLB 模型
    _thermionViewer!.loadGlb("assets/cube.glb");

    // 设置相机位置和旋转
    _thermionViewer!.setCameraPosition(0, 1, 10);
    _thermionViewer!.setCameraRotation(
        v.Quaternion.axisAngle(v.Vector3(1, 0, 0), -30 / 180 * pi) *
            v.Quaternion.axisAngle(v.Vector3(0, 1, 0), 15 / 180 * pi));

    // 添加光源
    _thermionViewer!.addLight(LightType.SUN, 7500, 50000, 0, 0, 0, 1, -1, -1);

    // 启动渲染
    _thermionViewer!.setRendering(true);
    _loaded = true;

    setState(() {});
  }

  // 卸载资源
  Future _unload() async {
    var viewer = _thermionViewer!;
    _thermionViewer = null;
    setState(() {});
    await viewer.dispose();
    _loaded = false;
    setState(() {});
  }

  // 加载按钮
  Widget _loadButton() {
    return Center(
        child: ElevatedButton(child: const Text("Load"), onPressed: _load));
  }

  // 卸载按钮
  Widget _unloadButton() {
    return Center(
        child: ElevatedButton(child: const Text("Unload"), onPressed: _unload));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Stack(children: [
      if (_thermionViewer != null)
        Positioned.fill(child: ThermionWidget(viewer: _thermionViewer!)),
      if (!_loaded) _loadButton(),
      if (_loaded) _unloadButton(),
    ]);
  }
}

更多关于Flutter温度监控插件thermion_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter温度监控插件thermion_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


thermion_flutter 是一个用于在 Flutter 应用中监控设备温度的插件。它可以帮助开发者获取设备的温度信息,并在应用中进行展示或处理。以下是如何使用 thermion_flutter 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  thermion_flutter: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 thermion_flutter 插件:

import 'package:thermion_flutter/thermion_flutter.dart';

3. 获取设备温度

你可以使用 ThermionFlutter 类来获取设备的温度信息。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TemperatureScreen(),
    );
  }
}

class TemperatureScreen extends StatefulWidget {
  [@override](/user/override)
  _TemperatureScreenState createState() => _TemperatureScreenState();
}

class _TemperatureScreenState extends State<TemperatureScreen> {
  double _temperature = 0.0;

  Future<void> _getTemperature() async {
    try {
      double temperature = await ThermionFlutter.getTemperature();
      setState(() {
        _temperature = temperature;
      });
    } catch (e) {
      print("Failed to get temperature: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Temperature Monitor'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Temperature: $_temperature °C',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _getTemperature,
              child: Text('Get Temperature'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部