Flutter_fft: Почему аргумент типа «строка» не может быть назначена типу параметра 'int'?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Flutter_fft: Почему аргумент типа «строка» не может быть назначена типу параметра 'int'?

Сообщение Anonymous »

Я начал работать над проектом с Flutter и Dart. Приложение должно отображать спектрометр на основе сигнала, полученного микрофоном. Я использовал Flutter_fft для обработки сигналов и синхронизации, чтобы сделать диаграмму.

Код: Выделить всё

The argument type 'String' can't be assigned to the parameter type 'int'.
Как я могу разрешить эту ошибку? 'freq' или «частота? должны быть ключами для извлечения аудио. Я пробовал все, даже если я абсолютный новичок в кодировании Android, но ни один из них, кажется, не знает ответа. < /P>
Это весь код: < /p>

Код: Выделить всё

import 'package:flutter/material.dart';
import 'package:flutter_fft/flutter_fft.dart';
import 'package:intl/intl.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:syncfusion_flutter_charts/charts.dart';

class Spettrometro extends StatefulWidget {
@override
_SpettrometroState createState() => _SpettrometroState();
}

class _SpettrometroState extends State {
FlutterFft flutterFft = FlutterFft();
List data = [];
bool isRecording = false;

@override
void initState() {
super.initState();
requestPermission();
}

Future requestPermission() async {
var status = await Permission.microphone.request();
if (status.isGranted) {
startListening();
} else {
print("Permesso microfono negato");
}
}

void startListening() async {
await flutterFft.startRecorder();
setState(() => isRecording = true);

flutterFft.onRecorderStateChanged.listen((event) {
final dynamic frequencyValue = event['freq']; // This is the problematic line of code
double? freq;

// Conversione robusta a double
if (frequencyValue != null) {
freq = double.tryParse(frequencyValue.toString());
}

if (freq != null && freq > 0) {
setState(() {
data.add(DataPoint(DateTime.now(), freq!));
if (data.length > 100) data.removeAt(0);
});
}
});
}

void stopListening() {
flutterFft.stopRecorder();
setState(() => isRecording = false);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Spettrometro Audio")),
body: Column(
children: [
Expanded(
child: SfCartesianChart(
primaryXAxis: DateTimeAxis(),
primaryYAxis: NumericAxis(
numberFormat:
NumberFormat.decimalPattern(),
),
series: [
LineSeries(
dataSource: data,
xValueMapper: (DataPoint point, _) => point.time,
yValueMapper: (DataPoint point, _) => point.frequency,
),
],
),
),
ElevatedButton(
onPressed: isRecording ? stopListening : startListening,
child: Text(isRecording ? "Ferma" : "Avvia"),
),
],
),
);
}
}

class DataPoint {
final DateTime time;
final double frequency;
DataPoint(this.time, this.frequency);
}
< /code>
Я попытался заставить эту строку кода, используя < /p>
double? freq = event["freq"] is num ? (event["freq"] as num).toDouble() : double.tryParse(event["freq"].toString());

Но это не работает

Подробнее здесь: https://stackoverflow.com/questions/794 ... e-paramete
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»