chatbuss_chat 1.0.0
chatbuss_chat: ^1.0.0 copied to clipboard
Support client in-app pour applications Flutter — messagerie temps réel, pièces jointes et enquête de satisfaction, adossés à la plateforme ChatBuss.
example/lib/main.dart
// App d'exemple : simule "KoolPay" qui integre le support ChatBuss.
//
// Remplace kServerUrl et kChannelId par les tiens (canal livechat cree dans ChatBuss),
// puis : flutter run
import 'package:flutter/material.dart';
import 'package:chatbuss_chat/chatbuss_chat.dart';
// ⚠️ A CONFIGURER — surchargeable sans toucher au code, pour pointer un serveur
// local pendant les essais :
//
// flutter run \
// --dart-define=CHATBUSS_SERVER=http://10.0.2.2:8000 \
// --dart-define=CHATBUSS_CHANNEL=<uuid-du-canal>
//
// 10.0.2.2 est l'adresse par laquelle un EMULATEUR Android joint la machine
// hote : "localhost" designerait l'emulateur lui-meme. Sur un telephone reel
// branche en USB, utiliser l'IP LAN de la machine.
const String kServerUrl = String.fromEnvironment(
'CHATBUSS_SERVER',
defaultValue: 'https://chatbuss-server.h.gandyam.com',
);
const String kChannelId = String.fromEnvironment(
'CHATBUSS_CHANNEL',
defaultValue: '154f052a-63a8-4e3c-9927-d93a87fffc12',
);
void main() => runApp(const DemoApp());
class DemoApp extends StatelessWidget {
const DemoApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'KoolPay (demo)',
theme: ThemeData(colorSchemeSeed: const Color(0xFF0CA678), useMaterial3: true),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
void _openSupport(BuildContext context) {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => const ChatbussChatScreen(
serverUrl: kServerUrl,
channelId: kChannelId,
// L'app connait deja son utilisateur -> pas de formulaire.
user: ChatUser(name: 'Awa Diop', email: 'awa@exemple.com', phone: '+221770000000'),
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('KoolPay')),
body: const Center(
child: Padding(
padding: EdgeInsets.all(24),
child: Text(
'Ceci est une app cliente (ex: paiement mobile).\n\n'
'Appuyez sur le bouton "Aide" en bas a droite pour contacter le support '
'via ChatBuss, sans quitter l\'application.',
textAlign: TextAlign.center,
),
),
),
floatingActionButton: FloatingActionButton.extended(
onPressed: () => _openSupport(context),
icon: const Icon(Icons.support_agent),
label: const Text('Aide'),
),
);
}
}