I have problem with the noise_meter package. I added all of the permissions for the android and iOs devices as in the pub.dev but the example app is not working at all.
I added print in to the onData function but it seems that app is unable to listen to stream. Any ideas?
import 'package:noise_meter/noise_meter.dart';
import 'package:flutter/material.dart';
import 'dart:async';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
MyAppState createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
bool _isRecording = false;
StreamSubscription<NoiseReading>? _noiseSubscription;
late NoiseMeter _noiseMeter;
@override
void initState() {
super.initState();
_noiseMeter = NoiseMeter(onError);
}
void onData(NoiseReading noiseReading) {
print('ondata');
setState(() {
if (!_isRecording) {
_isRecording = true;
}
});
print(noiseReading.toString());
}
void onError(Object error) {
print(error.toString());
_isRecording = false;
}
void start() async {
try {
_noiseSubscription = _noiseMeter.noiseStream.listen(onData);
print('stream');
} catch (err) {
print(err);
}
}
void stop() async {
print("stop");
try {
if (_noiseSubscription != null) {
_noiseSubscription!.cancel();
_noiseSubscription = null;
}
setState(() {
_isRecording = false;
});
} catch (err) {
print('stopRecorder error: $err');
}
}
List<Widget> getContent() => <Widget>[
Container(
margin: EdgeInsets.all(25),
child: Column(children: [
Container(
margin: EdgeInsets.only(top: 20),
child: Text(_isRecording ? "Mic: ON" : "Mic: OFF",
style: TextStyle(fontSize: 25, color: Colors.blue)),
)
])),
];
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: getContent())),
floatingActionButton: FloatingActionButton(
backgroundColor: _isRecording ? Colors.red : Colors.green,
onPressed: _isRecording ? stop : start,
child: _isRecording ? Icon(Icons.stop) : Icon(Icons.mic)),
),
);
}
}
I checked all of the permissions, but i dont have any more ideas.