Package selection guidance compiled from public package information, community data, and project usage.
ed_screen_recorder is a Flutter plugin that enables screen recording functionality on Android and iOS devices. It supports Android SDK 21+ and iOS 10+, allowing developers to capture device screens within their apps. The plugin integrates seamlessly with Flutter projects and provides access to screen recording features through a simple API. Ideal for creating tutorials, debugging tools, or interactive app demonstrations.
Use cases
Creating in-app tutorial videos
Debugging app behavior via screen recordings
Building educational or demonstration apps
Recording user interactions for analytics
Developing screen-sharing features
Key features
Cross-platform support (Android & iOS)
Simple integration with Flutter
Supports Android SDK 21+ and iOS 10+
Enables real-time screen capture
Lightweight and focused on core functionality
Suitable for
App developers needing screen recording
Educational app creators
Debugging and testing tools
User onboarding feature builders
Interactive demo applications
Considerations
Requires appropriate permissions on both platforms
Limited to supported OS versions
May require additional configuration for background recording
Not suitable for high-resolution or long-duration recordings without optimization
Privacy considerations when recording user screens
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
ED Flutter Screen Recorder
Screen recorder plugin for Flutter. Supports IOS and Android devices.It does not work on the IOS emulator!!!!
You only need add the permission message on the Info.plist
<key>NSPhotoLibraryUsageDescription</key>
<string>Save video in gallery</string><key>NSMicrophoneUsageDescription</key><string>Save audio in video</string>
Usage/Examples
import'package:screen_recorder/screen_recorder.dart';
ScreenRecorder? screenRecorder;
Map<String, dynamic>? _response;
@overridevoidinitState() {
super.initState();
screenRecorder = ScreenRecorder();
}
Future<void> startRecord({requiredString fileName}) async {
// Directory tempDir = await getTemporaryDirectory();// String tempPath = tempDir.path;var response = await edScreenRecorder?.startRecordScreen(
fileName: fileName,
// `dirPathToSave` Optional. It will save the video there when you give the file path with whatever you want.//If you leave it blank, the Android operating system will save it to the gallery.
dirPathToSave: tempPath,
audioEnable: false,
);
setState(() {
_response = response;
});
}
Future<void> stopRecord() async {
var response = await edScreenRecorder?.stopRecord();
setState(() {
_response = response;
});
}
@overrideWidgetbuild(BuildContext context) {
returnScaffold(
appBar: AppBar(
title: constText("Screen Recording Debug"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("File: ${(_response?['file'] as File?)?.path}"),
Text("Status: ${(_response?['success']).toString()}"),
Text("Event: ${_response?['eventname']}"),
Text("Progress: ${(_response?['progressing']).toString()}"),
Text("Message: ${_response?['message']}"),
Text("Video Hash: ${_response?['videohash']}"),
Text("Start Date: ${(_response?['startdate']).toString()}"),
Text("End Date: ${(_response?['enddate']).toString()}"),
ElevatedButton(onPressed: () => startRecord(fileName: "eren"), child: constText('START RECORD')),
ElevatedButton(onPressed: () => stopRecord(), child: constText('STOP RECORD')),
],
),
),
);
}
Resources used within the plugin
HBRecorder
Lightweight screen and audio recording Android library.
URL