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

A clean, customizable Flutter UI SDK and runtime controller for AI chat interfaces, RAG, and dynamic client-side function calling.

INFRIA Flutter SDK #

pub package Dart Analysis Flutter License: MIT

INFRIA adalah AI Infrastructure for Mobile Applications yang menyediakan Flutter SDK dan cloud orchestration untuk mengintegrasikan asisten percakapan cerdas berbasis RAG (Retrieval-Augmented Generation) dan Dynamic Client-Side Function Calling ke aplikasi mobile tanpa perlu membangun pipeline AI dari nol.


๐ŸŒŸ Fitur Utama #

  • ๐Ÿ’ฌ Ready-to-Use Inclusive Chat UI (InfriaChat): Antarmuka obrolan modern yang mendukung tema Light/Dark, avatar, animasi typing indicator, dan auto-scroll.
  • โšก Dynamic Client-Side Function Calling: AI di cloud dapat meminta eksekusi fungsi lokal di perangkat mobile (misal: panggil API rumah sakit, cek nomor antrean, ambil data GPS) secara aman dengan round-trip otomatis.
  • ๐Ÿ”’ Arsitektur Keamanan BYOK (Bring Your Own Key): Kunci rahasia AI (Gemini / OpenAI) disimpan aman dan terenkripsi di Web Console INFRIA โ€” tidak pernah ditaruh di dalam aplikasi mobile.
  • ๐Ÿ’ก Inclusive UX untuk Pengguna Awam & Lansia:
    • Suggestion Chips: Tombol pertanyaan/aksi cepat di atas input bar.
    • Function Execution Indicator: Animasi status saat AI sedang mengambil data lokal di HP.
    • Confirmation Dialog: Dialog persetujuan sebelum mengeksekusi fungsi sensitif.
  • ๐Ÿ“Š Observe & Improve Feedback Loop: Komponen rating (๐Ÿ‘ / ๐Ÿ‘Ž) untuk memantau performa jawaban AI dan mencatat Knowledge Gap.
  • ๐Ÿ”„ Session Management: Pengelolaan sesi obrolan terisolasi dengan auto-generated UUID/Nanoid.
  • ๐ŸŽจ Fleksibilitas Presentasi: Tampilan halaman penuh (Fullscreen), Modal Bottom Sheet, Dialog Popup, maupun Floating Action Button (FAB).

๐Ÿ—๏ธ Arsitektur Sistem #

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚            Aplikasi Flutter Klien (Mobile)             โ”‚
โ”‚  - InfriaClient (projectId & inf_pub_xxx)              โ”‚
โ”‚  - FunctionRegistry & FunctionExecutor (Lokal di HP)   โ”‚
โ”‚  - ChatController & InfriaChat UI                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                           โ”‚ HTTP REST (/v1/runtime/*)
                           โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   BACKEND INFRIA                       โ”‚
โ”‚  - Firebase Cloud Functions (API Gateway & Multi-tenant)โ”‚
โ”‚  - Firestore & Secret Manager (Tersimpan Kunci BYOK)   โ”‚
โ”‚  - n8n & RAG Vector Retrieval                          โ”‚
โ”‚  - LLM Provider (Google Gemini / OpenAI)               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Panduan Memulai Cepat (Quickstart) #

1. Instalasi #

Tambahkan infria ke dalam proyek Flutter Anda:

flutter pub add infria

2. Auto-Konfigurasi via CLI (infria init) #

Gunakan tool CLI bawaan untuk memilih proyek dan menghasilkan lib/infria_options.dart secara otomatis:

dart run infria init

CLI akan menampilkan daftar proyek Anda dan otomatis membuat file konfigurasi lib/infria_options.dart.

3. Inisialisasi & Pendaftaran Fungsi (Developer Experience Setara Firebase) #

import 'package:flutter/material.dart';
import 'package:infria/infria.dart';
import 'infria_options.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 1. Inisialisasi SDK via Options yang di-generate CLI
  await InfriaSDK.initializeApp(
    options: DefaultInfriaOptions.currentPlatform,
  );

  // 2. Daftarkan callback fungsi lokal yang dapat dipanggil AI secara instan
  InfriaSDK.onFunctionCall(
    'request_refund',
    (arguments) async {
      final txId = arguments['transaction_id'] as String;
      final response = await TransaksiAPI.batalin(txId);
      return response.status; // "Berhasil_Dibatalkan"
    },
    description: 'Memproses pembatalan pesanan dan refund',
    parameters: const [
      FunctionParameter.string('transaction_id', description: 'Nomor ID transaksi', isRequired: true),
    ],
  );

  runApp(const MyApp());
}

4. Tampilkan Widget Chat (InfriaChat) #

class ChatScreen extends StatelessWidget {
  final ChatController controller;

  const ChatScreen({super.key, required this.controller});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Asisten Layanan Kesehatan'),
      ),
      body: InfriaChat(
        controller: controller,
        enableFeedback: true,
        suggestions: const [
          QuickSuggestion(
            label: '๐Ÿฉบ Cek Antrean Poli',
            message: 'Berapa nomor antrean saya di Poli Gigi sekarang?',
            icon: Icons.access_time_rounded,
          ),
          QuickSuggestion(
            label: '๐Ÿ“… Jadwal Dokter',
            message: 'Tampilkan jadwal dokter spesialis anak hari ini',
            icon: Icons.calendar_today_rounded,
          ),
          QuickSuggestion(
            label: '๐Ÿ“‹ Syarat BPJS',
            message: 'Apa saja syarat pendaftaran pasien BPJS?',
            icon: Icons.description_rounded,
          ),
        ],
      ),
    );
  }
}

๐ŸŽจ Kustomisasi Tema & Builder #

Menggunakan Presets Tema #

InfriaChat(
  controller: controller,
  theme: InfriaChatTheme.dark().copyWith(
    userBubbleColor: const Color(0xFF2563EB),
    assistantBubbleColor: const Color(0xFF1E293B),
  ),
)

Kustomisasi Bubble & Header #

InfriaChat(
  controller: controller,
  headerBuilder: (context, controller) {
    return Container(
      padding: const EdgeInsets.all(12),
      color: Colors.blue.shade50,
      child: Text('Total Pesan: ${controller.messageCount}'),
    );
  },
  messageBubbleBuilder: (context, message) {
    return CustomBubbleWidget(message: message);
  },
)

๐Ÿ“ฑ Mode Tampilan Presentasi (Modal & Floating Button) #

Buka via Modal Bottom Sheet #

showInfriaChatBottomSheet(
  context: context,
  controller: controller,
);

Buka via Modal Dialog Popup #

showInfriaChatDialog(
  context: context,
  controller: controller,
);

Pasang Floating Action Button (FAB) #

Scaffold(
  floatingActionButton: InfriaChatFloatingButton(
    controller: controller,
    tooltip: 'Tanya Asisten AI',
  ),
  body: MyDashboardContent(),
)

๐Ÿงช Menjalankan Pengujian #

SDK ini dilengkapi dengan suite pengujian komprehensif (Unit Tests & Widget Tests):

# Analisis statis
dart analyze

# Jalankan seluruh test suite
flutter test

๐Ÿ“„ Lisensi #

Didistribusikan di bawah lisensi MIT. Lihat file LICENSE untuk informasi lebih lanjut.

1
likes
0
points
130
downloads

Publisher

unverified uploader

Weekly Downloads

A clean, customizable Flutter UI SDK and runtime controller for AI chat interfaces, RAG, and dynamic client-side function calling.

Homepage
Repository (GitHub)
View/report issues

Topics

#ai #chat #flutter #healthcare #llm

License

unknown (license)

Dependencies

flutter, http

More

Packages that depend on infria