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

Flutter UI hooks for the AI SDK Dart port.

ai_sdk_flutter #

Flutter UI controllers for AI SDK Dart — the Dart/Flutter equivalent of the Vercel AI SDK React hooks (useChat, useCompletion, useObject).

Installation #

dependencies:
  ai: ^0.1.0
  ai_sdk_flutter: ^0.1.0
  ai_sdk_openai: ^0.1.0   # or another provider

Controllers #

ChatController — streaming chat #

import 'package:ai_sdk_flutter/ai_sdk_flutter.dart';
import 'package:ai_sdk_openai/ai_sdk_openai.dart';
import 'package:flutter/material.dart';

class ChatPage extends StatefulWidget {
  @override
  State<ChatPage> createState() => _ChatPageState();
}

class _ChatPageState extends State<ChatPage> {
  late final ChatController _chat;

  @override
  void initState() {
    super.initState();
    _chat = ChatController(
      model: openai('gpt-4.1-mini'),
      onFinish: (event) => print('Done: ${event.text}'),
      onError: (error) => print('Error: $error'),
    );
  }

  @override
  void dispose() {
    _chat.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return ListenableBuilder(
      listenable: _chat,
      builder: (context, _) {
        return Column(
          children: [
            Expanded(
              child: ListView.builder(
                itemCount: _chat.messages.length,
                itemBuilder: (context, i) {
                  final msg = _chat.messages[i];
                  return ListTile(
                    title: Text(msg.role.name),
                    subtitle: Text(msg.content),
                  );
                },
              ),
            ),
            if (_chat.isStreaming) const LinearProgressIndicator(),
            ElevatedButton(
              onPressed: () => _chat.append('Tell me a joke'),
              child: const Text('Ask'),
            ),
          ],
        );
      },
    );
  }
}

CompletionController — single-turn completion #

final completion = CompletionController(model: openai('gpt-4.1-mini'));

// Start streaming a completion
await completion.complete('Explain async/await in Dart.');
print(completion.text); // streamed result

completion.dispose();

ObjectStreamController — live structured output #

final controller = ObjectStreamController<Map<String, dynamic>>(
  model: openai('gpt-4.1-mini'),
  schema: Schema<Map<String, dynamic>>(
    jsonSchema: const {'type': 'object', 'properties': {'title': {'type': 'string'}}},
    fromJson: (json) => json,
  ),
);

await controller.submit('Give me a book title');
print(controller.object); // partially streamed object
controller.dispose();

License #

MIT

0
likes
140
points
18
downloads

Documentation

API reference

Publisher

verified publisherhashstudios.dev

Weekly Downloads

Flutter UI hooks for the AI SDK Dart port.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

ai_sdk_dart, flutter

More

Packages that depend on ai_sdk_flutter_ui