firestore_wrapper 1.0.3
firestore_wrapper: ^1.0.3 copied to clipboard
A type-safe wrapper for Cloud Firestore operations in Flutter, providing a clean and strongly-typed interface.
import 'package:firestore_wrapper/firestore_wrapper.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'models/user.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
// Create a typed collection reference
final usersCollection = Fb.collection<User>(
'users',
User.fromJson,
);
return Scaffold(
appBar: AppBar(
title: const Text('Firestore Wrapper Example'),
),
body: StreamBuilder<List<User>>(
stream: usersCollection
.query()
.where('status', isEqualTo: 'active')
.orderBy('points', descending: true)
.limit(10)
.stream(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
}
if (!snapshot.hasData) {
return const Center(child: CircularProgressIndicator());
}
final users = snapshot.data!;
return ListView.builder(
itemCount: users.length,
itemBuilder: (context, index) {
final user = users[index];
return ListTile(
title: Text(user.name),
subtitle: Text('Points: ${user.points}'),
);
},
);
},
),
);
}
}