splive 2.0.1
splive: ^2.0.1 copied to clipboard
Official Flutter SDK for Specular.Live voice, video, chat and realtime communication.
example/main.dart
import 'package:flutter/material.dart';
import 'package:splive/splive.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const SpliveExampleApp());
}
class SpliveExampleApp extends StatelessWidget {
const SpliveExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'SPLive SDK Example',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorSchemeSeed: Colors.blue,
useMaterial3: true,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
late final SpliveSdk sdk;
String status = 'Ready';
// Replace with your own values.
static const username = 'demo';
static const userid = 'asdadcadqweq';
static const password = '12345678';
static const groupId = 'YOUR_GROUP_ID';
String? roomId;
@override
void initState() {
super.initState();
sdk = SpliveSdk(
baseUrl: SpliveEndpoints.serverUrl,
);
}
Future<void> login() async {
try {
final auth = await sdk.auth.login(
usernameOrEmail: username,
password: password,
);
setState(() {
status = 'Logged in\n'
'User: ${auth.user.username}\n'
'Token: ${auth.token.substring(0, 20)}...';
});
} catch (e) {
setState(() {
status = e.toString();
});
}
}
Future<void> loadRooms() async {
try {
final rooms = await sdk.rooms.loadrooms(
groupid: groupId,
);
setState(() {
status = 'Found ${rooms.length} room(s)';
});
} catch (e) {
setState(() {
status = e.toString();
});
}
}
Future<void> createRoom() async {
try {
final room = await sdk.rooms.createRoom(
groupId: groupId,
name: 'SDK Demo Room',
roomType: 'voice',
);
roomId = room.id;
setState(() {
status = 'Created room\nID: ${room.id}';
});
} catch (e) {
setState(() {
status = e.toString();
});
}
}
Future<void> joinRoom() async {
if (roomId == null) {
setState(() {
status = 'Create a room first.';
});
return;
}
try {
await sdk.rooms.joinRoom(
roomId: roomId!,
userId: userid,
);
setState(() {
status = 'Joined room';
});
} catch (e) {
setState(() {
status = e.toString();
});
}
}
Future<void> leaveRoom() async {
if (roomId == null) return;
try {
await sdk.rooms.leaveroom(
roomid: roomId!,
);
setState(() {
status = 'Left room';
});
} catch (e) {
setState(() {
status = e.toString();
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('SPLive SDK Example'),
),
body: Padding(
padding: const EdgeInsets.all(20),
child: ListView(
children: [
Card(
child: Padding(
padding: const EdgeInsets.all(16),
child: Text(status),
),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: login,
child: const Text('1. Login'),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: loadRooms,
child: const Text('2. Load Rooms'),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: createRoom,
child: const Text('3. Create Room'),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: joinRoom,
child: const Text('4. Join Room'),
),
const SizedBox(height: 10),
ElevatedButton(
onPressed: leaveRoom,
child: const Text('5. Leave Room'),
),
],
),
),
);
}
}