Flutter示波器功能插件oscilloscope的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter示波器功能插件oscilloscope的使用

示波器是一个图形化显示,类似于示波器上的波形,它将数据显示为滚动横跨屏幕。该组件使用一个List作为数据源,并将信息缩放以适应显示。请查看下面的示例以了解如何使用。

每次向数据集中添加一个值时,就会在轨迹上绘制一个新的点。这个轨迹从左到右延伸直到达到屏幕末端,此时轨迹会滚动以显示新的值。

可以使用以下值自定义显示:

  • backgroundColor - 默认颜色为黑色。
  • traceColor - 默认颜色为白色。
  • margin - 默认值为EdgeInsets.all(10.0)
  • strokeWidth - 默认宽度为2.0。
  • showYAxis - 显示或隐藏表示0轴线的线(默认为false)。
  • yAxisColor - 如果设置了显示Y轴,则将以此颜色显示(默认为白色)。

其他设置包括:

  • dataSet - 这是用于生成轨迹的数据集。
  • yAxisMin - 一个指标来定义数据集中找到的最小值(默认为0.0)。
  • yAxisMax - 一个指标来定义数据集中找到的最大值(默认为1.0)。

yAxisMinyAxisMax 用于确定缩放因子,以便所有数据值都能显示。这些值可以被修改以改变数据显示的比例。

示波器示例

开始使用

要安装包,请访问 这里

有关使用Flutter的更多信息,请参阅 官方文档

示例代码

以下是使用示波器插件的完整示例代码:

import 'dart:async';
import 'dart:math';

/// 使用示波器插件的演示
///
/// 在此演示中,生成了两个显示以显示正弦和余弦的输出。
/// 示波器显示将显示数据集,这将填充Y轴,然后屏幕显示将“滚动”。
import 'package:flutter/material.dart';
import 'package:oscilloscope/oscilloscope.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: "Oscilloscope Display Example",
      home: Shell(),
    );
  }
}

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

class _ShellState extends State<Shell> {
  List<double> traceSine = [];
  List<double> traceCosine = [];
  double radians = 0.0;
  Timer? _timer;

  /// 生成测试波形的方法
  /// 这给我们一个介于+1和-1之间的值,用于正弦和余弦
  _generateTrace(Timer t) {
    // 生成我们的值
    var sv = sin((radians * pi));
    var cv = cos((radians * pi));

    // 将值添加到数据集中
    setState(() {
      traceSine.add(sv);
      traceCosine.add(cv);
    });

    // 调整以循环利用弧度值(因为0等于2π弧度)
    radians += 0.05;
    if (radians >= 2.0) {
      radians = 0.0;
    }
  }

  [@override](/user/override)
  initState() {
    super.initState();
    // 创建一个定时器以生成测试值
    _timer = Timer.periodic(Duration(milliseconds: 60), _generateTrace);
  }

  [@override](/user/override)
  void dispose() {
    _timer!.cancel();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 创建一个正弦波形示波器
    Oscilloscope scopeOne = Oscilloscope(
      showYAxis: true,
      yAxisColor: Colors.orange,
      margin: EdgeInsets.all(20.0),
      strokeWidth: 1.0,
      backgroundColor: Colors.black,
      traceColor: Colors.green,
      yAxisMax: 1.0,
      yAxisMin: -1.0,
      dataSet: traceSine,
    );

    // 创建一个余弦波形示波器
    Oscilloscope scopeTwo = Oscilloscope(
      showYAxis: true,
      margin: EdgeInsets.all(20.0),
      strokeWidth: 3.0,
      backgroundColor: Colors.black,
      traceColor: Colors.yellow,
      yAxisMax: 1.0,
      yAxisMin: -1.0,
      dataSet: traceCosine,
    );

    // 生成一个Scaffold
    return Scaffold(
      appBar: AppBar(
        title: Text("OscilloScope Demo"),
      ),
      body: Column(
        children: <Widget>[
          Expanded(flex: 1, child: scopeOne),
          Expanded(
            flex: 1,
            child: scopeTwo,
          ),
        ],
      ),
    );
  }
}

更多关于Flutter示波器功能插件oscilloscope的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter示波器功能插件oscilloscope的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,oscilloscope 是一个用于显示波形数据的插件,通常用于模拟示波器的功能。使用这个插件,你可以将实时数据(如音频信号、传感器数据等)以波形图的形式展示出来。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  oscilloscope: ^0.0.1  # 请检查最新版本

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

2. 导入插件

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

import 'package:oscilloscope/oscilloscope.dart';

3. 使用 Oscilloscope 小部件

Oscilloscope 是一个自定义的小部件,你可以在你的应用中使用它来显示波形数据。

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

class OscilloscopeDemo extends StatefulWidget {
  @override
  _OscilloscopeDemoState createState() => _OscilloscopeDemoState();
}

class _OscilloscopeDemoState extends State<OscilloscopeDemo> {
  List<double> data = [];

  @override
  void initState() {
    super.initState();
    // 模拟生成一些数据
    _generateData();
  }

  void _generateData() {
    for (int i = 0; i < 100; i++) {
      data.add((i % 20) * 0.1); // 生成一些简单的波形数据
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Oscilloscope Demo'),
      ),
      body: Center(
        child: Oscilloscope(
          data: data,
          width: MediaQuery.of(context).size.width,
          height: 200,
          backgroundColor: Colors.black,
          traceColor: Colors.green,
          yMin: -1.0,
          yMax: 1.0,
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: OscilloscopeDemo(),
  ));
}

4. 参数说明

  • data: 一个包含波形数据的 List<double> 列表。
  • width: 波形图的宽度。
  • height: 波形图的高度。
  • backgroundColor: 波形图的背景颜色。
  • traceColor: 波形图的线条颜色。
  • yMinyMax: Y轴的最小和最大值,用于缩放波形图。

5. 实时更新数据

如果你需要实时更新波形数据,可以通过 setState 方法来更新 data 列表,并重新绘制波形图。

void _updateData() {
  setState(() {
    data.add((DateTime.now().millisecond % 20) * 0.1); // 添加实时数据
    if (data.length > 100) {
      data.removeAt(0); // 保持数据长度不超过100
    }
  });
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!