chat_flutter_sdk 0.0.2 copy "chat_flutter_sdk: ^0.0.2" to clipboard
chat_flutter_sdk: ^0.0.2 copied to clipboard

Official Yalo Flutter chat SDK

example/lib/main.dart

// Copyright (c) Yalochat, Inc. All rights

import 'package:chat_flutter_sdk/yalo_sdk.dart';
import 'package:flutter/material.dart';

import 'package:go_router/go_router.dart';
import 'package:logging/logging.dart';

void main() {
  Logger.root.level = Level.ALL;
  Logger.root.onRecord.listen((record) {
    debugPrint(
      '${record.level.name}: ${record.time}: ${record.message} ${record.error ?? ''}',
    );
  });
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyRoutedApp());
}

final class MyRoutedApp extends StatelessWidget {
  final router = GoRouter(
    routes: [
      GoRoute(
        path: '/',
        builder: (_, _) => MyApp(),
        routes: <RouteBase>[
          GoRoute(
            path: 'chat',
            builder: (context, _) {
              final themeData = Theme.of(context);
              return Chat(
                client: YaloChatClient(
                  name: "Chat test",

                  // Your flow key
                  flowKey: "64d61ff9-e714-4db5-a15d-50502816b3d9",
                  // Your user token to authorize
                  userToken: 'test-user-123',
                  authToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJZYWxvQXBpS2V5IiwieWlkIjoiMzAwIiwieXQiOiJjb25zdW1lciJ9.08_-_l3w6BDCSSZ6OFOU46KTUXxSAHM1WR_yGMedbWo',
                ),
                theme: ChatTheme.fromThemeData(
                  themeData,
                  ChatTheme(
                    chatIconImage: const AssetImage(
                      'assets/images/oris-icon.png',
                    ),
                  ),
                ),
                onShopPressed: () {},
                onCartPressed: () {},
              );
            },
          ),
        ],
      ),
    ],
  );

  MyRoutedApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(routerConfig: router);
  }
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  void _handleChatClick(BuildContext context) {
    context.go("/chat");
  }

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(child: Text("Sample application for chat")),
        floatingActionButton: FloatingActionButton(
          onPressed: () => _handleChatClick(context),
          child: const Icon(Icons.message),
        ),
      ),
    );
  }
}