solidchat 0.0.5 copy "solidchat: ^0.0.5" to clipboard
solidchat: ^0.0.5 copied to clipboard

PlatformiOSmacOS

SolidChat SDK for Flutter

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:solidchat/dto/visitor_properties.dart' show VisitorProperties;
import 'package:solidchat/options.dart';
import 'package:solidchat/solidchat.dart';

void main() async {
  SolidChat.initialize(key: 'd9413013-da35-4ec1-b2db-18f5668686bc');
  await SolidChat.identify(
    userId: 'identified',
    properties: VisitorProperties(
      email: 'mateusz.wozniak@solidchat.io',
      name: 'Mateusz Woźniak',
    ),
  );
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _open() async {
    SolidChat.open(context, initialTab: SolidChatTab.knowledgeBase);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text('SolidChat demo'),
            StreamBuilder(
              stream: SolidChat.unreadConversationsCount,
              builder: (context, snap) {
                return Text('Unread conversations: ${snap.data ?? 0}');
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _open,
        tooltip: 'Open chat',
        child: const Icon(Icons.chat),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}