fl_firebase_chat 0.2.0
fl_firebase_chat: ^0.2.0 copied to clipboard
A comprehensive Flutter chat package with Firebase backend support, featuring real-time messaging, group chats, media sharing, voice messages, push notifications, and customizable UI components.
example/lib/main.dart
import 'package:example/auth/login_screen.dart';
import 'package:example/screens/home_screen.dart';
import 'package:example/services/local_auth_service.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Firebase Core is still needed for the chat package
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(title: 'FL Firebase Chat Example', theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true), home: const AuthGate());
}
}
class AuthGate extends StatefulWidget {
const AuthGate({super.key});
@override
State<AuthGate> createState() => _AuthGateState();
}
class _AuthGateState extends State<AuthGate> {
final _localAuth = LocalAuthService();
@override
Widget build(BuildContext context) {
return FutureBuilder<bool>(
future: _localAuth.isLoggedIn(),
builder: (context, snapshot) {
// Loading state
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(body: Center(child: CircularProgressIndicator()));
}
// User is logged in locally
if (snapshot.data == true) {
return HomeScreen(key: ValueKey('home_${DateTime.now().millisecondsSinceEpoch}'));
}
// User is not logged in
return LoginScreen(key: ValueKey('login_${DateTime.now().millisecondsSinceEpoch}'));
},
);
}
}