matecitodb_flutter 0.0.5
matecitodb_flutter: ^0.0.5 copied to clipboard
SDK oficial de Matecito para Flutter (BaaS de alto rendimiento).
🧉 matecitodb_flutter v0.0.5 (Beta) #
SDK oficial de Matecito para Flutter. Lleva tu base de datos en tiempo real al siguiente nivel con una integración nativa, tipado fuerte y manejo de estado sencillo.
🚀 Instalación #
Agrega esto a tu pubspec.yaml:
dependencies:
matecitodb_flutter: ^0.0.5
🛠️ CLI: Sincronización 100% Nativa (Dart) #
El SDK de Flutter incluye su propio CLI nativo escrito en Dart. Te permite compilar tu schema.prisma y empujar API Rules al servidor sin depender de Node.js o NPM.
# Sincroniza las colecciones en 2 pasadas (Resolución cruzada automática)
dart run matecitodb_flutter push --url https://miapp.matecito.dev --key mb_service_...
# Aplica las reglas de matecito.rules.json
dart run matecitodb_flutter rules push --url https://miapp.matecito.dev --key mb_service_...
# Aplicar un preset de seguridad rápido sin json a colecciones específicas
dart run matecitodb_flutter rules push --preset owner --collections posts,comments
# Ver las reglas actuales del servidor en una tabla ASCII
dart run matecitodb_flutter rules list
¡Bonus! Tras hacer push, se generará una copia de tu BBDD en lenguaje
schema.matecito. Puedes instalar nuestra Extensión Oficial de VS Code para visualizarla a full color.
⚡ Quick Start (Provider) #
La mejor forma de usarlo es envolviendo tu MaterialApp con el MatecitoDB_Provider:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final db = MatecitoDB.createClient('https://miapp.matecito.dev');
await db.auth.initialize(); // Imprescindible para recuperar sesión
runApp(
MatecitoDB_Provider(
db: db,
child: const MyApp(),
),
);
}
Para acceder al cliente en cualquier widget:
final db = MatecitoDB_Provider.of(context);
📡 Realtime con Streams #
Aprovecha el poder de los StreamBuilder nativos de Flutter:
StreamBuilder<RealtimeEvent>(
stream: db.from('mensajes').subscribe(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const CircularProgressIndicator();
final event = snapshot.data!;
return Text('${event.action}: ${event.record['texto']}');
},
)
🔐 Autenticación #
Persistencia automática mediante shared_preferences.
final res = await db.auth.signIn(email: 'juan@matecito.dev', password: '123');
if (res.hasError) {
print('Error: ${res.error!.message}');
} else {
print('Bienvenido ${res.data!.user.name}');
}
📁 Manejo de Archivos e Imágenes #
// Obtener un thumbnail para un widget de imagen
Image.network(
db.storage.getThumb(
collection: 'recetas',
recordId: 'ID',
filename: 'mate.jpg',
size: '400x300'
)
)
// Subir un archivo con Multipart
await db.from('posts').insertWithFile(
data: {'titulo': 'Mi post'},
files: [
MatecitoDB_File(
field: 'imagen',
path: '/path/to/image.jpg',
mimeType: 'image/jpeg'
)
],
);
🏗️ Requisitos #
- Flutter >= 3.0
- Dart >= 3.0
Hecho con ❤️ por Matecito. 🧉 ¡Disfruta el sabor de una base de datos real!