前提
Flutterでマイクで入力した音声の波形を表示するwindowsアプリケーションを作っています。
実行時に下記のエラーが出て、正常に実行されません。
実現したいこと
- windowsアプリケーション上に、pcに接続したマイクから拾った音の波形をリアルタイムで表示する。
発生している問題・エラーメッセージ
build自体はできて、アプリケーションが起動するが、波形が表示されない
エラーメッセージ Launching lib\main.dart on Windows in debug mode... lib\main.dart:1 Nuget.exe not found, trying to download or use cached version. Connecting to VM Service at ws://127.0.0.1:53581/1cAxDHIBWug=/ws ### 該当のソースコード ```Dart ソースコード import 'dart:developer'; import 'package:audio_streamer/audio_streamer.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatefulWidget { const MyApp({Key? key}) : super(key: key); @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { final AudioStreamer audioStreamer = AudioStreamer(); bool _isRecording = false; List<double> buffer = []; @override void initState() { super.initState(); } void onAudio(List<double> buffer) { setState(() { this.buffer = buffer; }); } void handleError(PlatformException error) { setState(() { _isRecording = false; }); log(error.message.toString()); log(error.details); } void start() async { audioStreamer.start(onAudio, handleError); setState(() { _isRecording = true; }); } void stop() async { bool stopped = await audioStreamer.stop(); setState(() { _isRecording = stopped; }); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return CustomPaint( painter: WavePainter( samples: buffer, color: Colors.blue, constraints: constraints, ), ); }, ), floatingActionButton: FloatingActionButton( backgroundColor: _isRecording ? Colors.red : Colors.green, onPressed: _isRecording ? stop : start, child: _isRecording ? const Icon(Icons.stop) : const Icon(Icons.mic), ), ), ); } } class WavePainter extends CustomPainter { WavePainter({ required this.samples, required this.color, required this.constraints, }); BoxConstraints constraints; List<double> samples; Color color; final _absMax = 1; static const _hightOffset = 0.5; @override void paint(Canvas canvas, Size size) { // 色、太さ、塗り潰しの有無などを指定 final paint = Paint() ..color = color ..strokeWidth = 1.0 ..style = PaintingStyle.stroke; // 得られたデータをオフセットのリストに変換する // やっていることは決められた範囲で等間隔に点を並べているだけ final points = toPoints(samples); // addPolygon で path をつくり drawPath でグラフを表現する final path = Path()..addPolygon(points, false); canvas.drawPath(path, paint); } @override bool shouldRepaint(oldPainting) => true; // 得られたデータを等間隔に並べていく List<Offset> toPoints(List<double> samples) { final points = <Offset>[]; for (var i = 0; i < (samples.length / 2); i++) { points.add( Offset( i / (samples.length / 2) * constraints.maxWidth, project(samples[i], _absMax, constraints.maxHeight), ), ); } return points; } double project(double value, int max, double height) { final waveHeight = (value / max) * height; return waveHeight + _hightOffset * height; } }
試したこと
visualstudio2022をC++によるデスクトップ開発にチェックをいれてインストールしなおした。
補足情報(FW/ツールのバージョンなど)
visual studio codeを使用しています。
プログラミング初心者なので、基本的なところがわかっていない可能性があります。
以下のサイトのコードをコピペしています。
https://zenn.dev/pressedkonbu/books/flutter-reverse-lookup-dictionary/viewer/010-audi-streamer