plaid_omni_connect 1.0.0 copy "plaid_omni_connect: ^1.0.0" to clipboard
plaid_omni_connect: ^1.0.0 copied to clipboard

Plaid Omni Connect Link integration for Flutter with seamless inline UX across mobile, web, and desktop platforms (iOS, Android, Web, macOS, Windows, Linux).

plaid_omni_connect #

Plaid Omni Connect Link integration for Flutter with seamless inline UX across all platforms: iOS, Android, Web, macOS, Windows, and Linux.

pub package License: MIT

✨ Features #

  • 🎯 Seamless inline modal UX - Never leaves your app
  • 📱 Universal platform support - iOS, Android, Web, macOS, Windows, Linux
  • 🔒 Secure by design - No tokens stored in package
  • 🎨 Native look and feel - Platform-specific modal implementations
  • 🚀 Easy to integrate - Simple, consistent API
  • Production ready - Based on Plaid's official Link SDK

🏗️ Architecture & Security #

This package handles the client-side UI integration of Plaid Link. In a production environment, it works in tandem with your backend server:

  1. Server: Calls Plaid API (/link/token/create) to generate a link_token.
  2. App: Fetches link_token from your server and passes it to PlaidOmniConnect.open().
  3. App: User completes the flow; plugin returns a public_token.
  4. App: Sends public_token back to your server.
  5. Server: Exchanges public_token for an access_token (/item/public_token/exchange) to fetch data.

🔒 Security Note: Never store your Plaid client_id or secret inside your Flutter app or this package. All sensitive API calls must happen on your backend.

🚀 Getting Started #

Installation #

Add to your pubspec.yaml:

dependencies:
  plaid_omni_connect: ^1.0.0

Run:

flutter pub get

Platform Setup #

iOS & Android

No additional setup required! ✅

macOS

No additional setup required! ✅ Note: Ensure your app has com.apple.security.network.client entitlement.

Windows

Requires WebView2 runtime (pre-installed on Windows 11).

For Windows 10, download: WebView2 Runtime

Linux

Install WebKitGTK:

Ubuntu/Debian:

sudo apt-get install libwebkit2gtk-4.0-dev

Fedora:

sudo dnf install webkit2gtk3-devel

Arch:

sudo pacman -S webkit2gtk

Web

No additional setup required! ✅

Usage #

import 'package:plaid_omni_connect/plaid_omni_connect.dart';

// 1. Get link token from your backend
final linkToken = await getPlaidLinkToken();

// 2. Open Plaid Link with inline modal
await PlaidOmniConnect.open(
  configuration: PlaidLinkConfiguration(
    linkToken: linkToken,
  ),
  onSuccess: (publicToken, metadata) {
    print('✅ Connected: ${metadata.institution.name}');
    print('Accounts: ${metadata.accounts.length}');
    
    // Send publicToken to your backend to exchange for access_token
    await exchangePublicToken(publicToken);
  },
  onExit: (error, metadata) {
    if (error != null) {
      print('❌ Error: ${error.displayMessage}');
    } else {
      print('User cancelled');
    }
  },
  onEvent: (eventName, metadata) {
    print('📊 Event: $eventName');
  },
);

📖 API Reference #

PlaidOmniConnect.open() #

Opens Plaid Link as an inline modal within your app.

Parameters:

  • configuration (required): PlaidLinkConfiguration with your link token
  • onSuccess (required): Callback when user successfully connects account
  • onExit (required): Callback when user exits or encounters error
  • onEvent (optional): Callback for tracking user events

PlaidLinkConfiguration #

PlaidLinkConfiguration({
  required String linkToken,  // From your backend
  bool noLoadingState = false,
})

Callbacks #

onSuccess:

void Function(String publicToken, LinkSuccessMetadata metadata)

onExit:

void Function(LinkError? error, LinkExitMetadata? metadata)

onEvent:

void Function(String eventName, LinkEventMetadata metadata)

🎨 UX Behavior #

Desktop (macOS, Windows, Linux) #

  • Modal dialog (600x800px) centered in your app window
  • Blocks parent window - true modal behavior
  • Smooth animations - 300ms fade in/out
  • Native styling - Follows platform design guidelines

Mobile (iOS, Android) #

  • Full-screen modal with native transitions
  • Gesture support - Swipe to dismiss

Web #

  • Centered modal with backdrop blur
  • Responsive - Adapts to screen size
  • Keyboard accessible - ESC to close

📚 Complete Example #

See the example directory for a full working demo app.

📄 License #

MIT License - see LICENSE file

Copyright (c) 2025 DecodeWest

0
likes
150
points
54
downloads

Publisher

unverified uploader

Weekly Downloads

Plaid Omni Connect Link integration for Flutter with seamless inline UX across mobile, web, and desktop platforms (iOS, Android, Web, macOS, Windows, Linux).

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, flutter_web_plugins, plugin_platform_interface

More

Packages that depend on plaid_omni_connect

Packages that implement plaid_omni_connect