ringg_flutter 0.1.0 copy "ringg_flutter: ^0.1.0" to clipboard
ringg_flutter: ^0.1.0 copied to clipboard

Ringg AI widget for Flutter — drop-in widget and headless controller for voice/text AI agents.

ringg_flutter #

Embeddable chat + voice-call widget for Ringg AI agents — the Flutter implementation, built on LiveKit. Text chat, Meet-style voice calls, interactive components (forms, calendars, quick replies, Block Kit) and a post-call feedback screen, all driven by a headless core you can also use without the bundled UI.

Install #

dependencies:
  ringg_flutter: ^0.1.0

Quick start #

import 'package:ringg_flutter/ringg_flutter.dart';

final livekit = createLiveKitTransport();
final controller = RinggWidgetController(
  const RinggWidgetConfig(agentId: 'your-agent-id', xApiKey: 'your-api-key'),
  ControllerPorts(
    transport: livekit.transport,
    urlResolver: const StaticUrlResolver({/* your environment URLs */}),
  ),
);

// Mount it over your app's content:
Stack(children: [
  const YourApp(),
  RinggWidget(controller: controller, transport: livekit),
]);

Dispose with controller.destroy() and livekit.dispose().

Platform setup (required for voice) #

iOS — ios/Runner/Info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>Voice calls use the microphone.</string>
<key>UIBackgroundModes</key>
<array><string>audio</string></array>

Android — android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />

Known issue — iOS 26.x simulators have NO working call audio #

On iOS 26.x simulator runtimes the audio engine has neither a working input (mic) nor output (playout) device — calls connect and transcripts stream, but you will not hear the agent or be able to unmute. This is an Apple simulator defect + upstream LiveKit limitation, not fixable app-side: client-sdk-swift#795, #849, Apple forums 738346, 803364. The widget degrades gracefully (listen-only attempt, no error). Test voice on a real device, an Android emulator, or macOS.

Headless use #

Skip RinggWidget and consume the stores directly — every piece of state is a Store<T> with snapshot + subscribe:

controller.messages.subscribe((snap) => print(snap.messages.length));
await controller.startCall(MediaType.text);
await controller.sendMessage('Hello!');

Example #

A full dev harness lives in example/ — offline mock mode by default, real backend via --dart-define-from-file. See example/README.md.

0
likes
0
points
113
downloads

Publisher

verified publisherringg.ai

Weekly Downloads

Ringg AI widget for Flutter — drop-in widget and headless controller for voice/text AI agents.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

audioplayers, flutter, flutter_markdown_plus, flutter_svg, http, livekit_client, markdown, url_launcher

More

Packages that depend on ringg_flutter