🚧 This is highly experimental! 🚧
🚧 API is subject to change! 🚧
This is a package to create recordings of Flutter widgets. The recordings can be exported as GIFs.
This is pure Flutter/Dart implementation without any dependencies on native or platform code. Thus it runs on all supported platforms.
Please note, that the encoding of the GIF takes a lot of time. On web it is basically useless because it takes so much time.
🚀 Getting Started
Setup
First, you will need to add screen_recorder to your pubspec.yaml:
dependencies:
  flutter:
    sdk: flutter
  screen_recorder: x.y.z # use the latest version found on pub.dev
Then, run flutter packages get in your terminal.
Example
Wrap your widget which should be recorded in a ScreenRecorder:
ScreenRecorder(
  height: 200,
  width: 200,
  background: Colors.white,
  controller: ScreenRecorderController(
    pixelRatio: 0.5,
    skipFramesBetweenCaptures: 2,
  ),
  child: // child which should be recorded
);
Then use ScreenRecorderController.start() to start recording and
ScreenRecorderController.stop() to stop the recording.
final gif = await ScreenRecorderController.export() gives you the result which can be written to disk.
A complete example can be found here.
⚠️ Known issues and limitations
- Platform views are invisible in screenshots (like webview or Google Maps). For further details, see this Flutter issue and this issue. Please give a 👍 to those issues in order to raise awareness and the prio of those issues.
- Web only works with Flutter's CanvasKit Renderer, for more information see Flutter Web Renderer docs.
- This package does not and will not support audio until it is possible in a pure Dart/Flutter environment.
- This package does not and will not support exporting as a video until it is possible in a pure Dart/Flutter environment.
Convert gif to video
In order to convert the gif to a video, you can try one of the following libraries. Please note, that compatibility was not tested.
| Library | Stats | 
|---|---|
| ffmpeg_kit_flutter | |
| flutter_video_compress | |
| video_editor | |
| video_trimmer | |
| video_compress |