> ## Documentation Index
> Fetch the complete documentation index at: https://docs.truv.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Flutter SDK

> Truv Bridge SDK for Flutter

**Package:** `truv_flutter` | [pub.dev](https://pub.dev/packages/truv_flutter) | [Demo app](https://github.com/truvhq/demo-flutter)

## Install

```bash theme={null}
flutter pub add truv_flutter
```

***

## Embedded Orders

Use `TruvOrder` to embed an Order, a multi-connection verification workflow that supports multiple data sources and product types.

```dart theme={null}
import 'package:flutter/widgets.dart';
import 'package:truv_flutter/truv_event.dart';
import 'package:truv_flutter/truv_flutter.dart';

class OrderScreen extends StatelessWidget {
  final String bridgeToken;

  const OrderScreen({super.key, required this.bridgeToken});

  @override
  Widget build(BuildContext context) {
    return TruvOrder(
      bridgeToken: bridgeToken,
      onOrderEvent: (TruvOrderBridgeEvent event) {
        switch (event) {
          case TruvOrderBridgeLoad():
            // Order page finished loading
            break;

          case TruvOrderBridgeClose():
            // User closed the Order
            break;

          case TruvOrderBridgeSuccess():
            // A task within the Order completed successfully.
            // The Order is still open at this point — it may show
            // a success screen or a self-certification screen
            // depending on the configuration.
            break;

          case TruvOrderBridgeCompleted():
            // The entire Order is complete (all tasks finished)
            break;
        }
      },
      onBridgeEvent: (TruvEventEvent event) {
        // Fired when the user interacts with the Bridge for a
        // sub-order (task) within the Order.
        // Equivalent to TruvBridge onEvent.
      },
    );
  }
}
```

***

## Bridge Widget

Use `TruvBridge` for single-connection flows like Direct Deposit Switch and Paycheck Linked Lending.

```dart theme={null}
import 'package:flutter/widgets.dart';
import 'package:truv_flutter/truv_event.dart';
import 'package:truv_flutter/truv_flutter.dart';

class BridgeScreen extends StatelessWidget {
  final String bridgeToken;

  const BridgeScreen({super.key, required this.bridgeToken});

  @override
  Widget build(BuildContext context) {
    return TruvBridge(
      bridgeToken: bridgeToken,
      onEvent: (TruvEvent event) {
        switch (event) {
          case TruvEventLoad():
            // Bridge finished loading
            break;

          case TruvEventClose():
            // User closed the Bridge
            break;

          case TruvEventSuccess(:final publicToken, :final metadata):
            // Called when the Bridge closes after a successful task.
            // publicToken — use this to retrieve data server-side.
            // metadata.taskId — the task identifier.
            break;

          case TruvEventEvent(:final eventType, :final payload):
            // Lifecycle event — see Bridge Events for all types.
            break;

          case TruvEventError():
            // An error occurred in the Bridge
            break;
        }
      },
    );
  }
}
```

See [Bridge Events](/developers/sdks/bridge-events) for all event types, payloads, and error codes.

***

## Sample app

<Card title="Flutter Demo" icon="mobile" href="https://github.com/truvhq/demo-flutter">
  Cross-platform with a single codebase
</Card>

<Steps>
  <Step title="Clone the repo">
    Clone the demo app from GitHub and install dependencies.
  </Step>

  <Step title="Add your API keys">
    Copy your **Client ID** and **Access Secret** from the [Dashboard](https://dashboard.truv.com) into the app's configuration file.
  </Step>

  <Step title="Run in sandbox mode">
    Use [sandbox test credentials](/developers/testing/test-credentials) to simulate a full verification flow. Use the demo app as a reference to understand how the SDK works.
  </Step>

  <Step title="Integrate the SDK into your app">
    Follow the implementation guide above to add Truv Bridge to your own application.
  </Step>

  <Step title="Go live">
    Swap in production credentials in your app when ready.
  </Step>
</Steps>
