Pena 💙 Flutter

PrivyID's Official Client Integration Library for Flutter.


Platform Requirement
Android SDK 30+
IOS 14+


flutter pub add pena_flutter

Android Platform

You should however make sure to set the correct minSdkVersion in android/app/build.gradle if it was previously lower than 30:

android {
    defaultConfig {
        minSdkVersion 30


import 'package:pena_flutter/pena_flutter.dart';

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  Widget build(BuildContext context) {
    return Pena(
      url: '',
      lang: 'en',
      signature: const Placement(x: 50, y: 100, page: 1),
      onAfterAction: (payload) {
        if (payload.action == 'sign') {



Name Type Default Description
url String - (Required) Document's url
lang String en Set language, valid value is en or id
visibility bool true Set signature visibility
privyId String - Set recipient's privyId
signature Placement - Set signature placement
(Deprecated) use API to set placement when upload the document
x num - X Coordinate
y num - Y Coordinate
page num - Target page
fixed bool false Disabled signature for moving
debug bool false Enable debug mode
needScrollTo num | String - Force user to scroll to target page before doing an action (sign,review,etc). Valid value is a number, or set last to target the last page
onAfterAction Function - After action hook


This project is licensed under the MIT License - see the LICENSE file for details