Files
farolero/lib/main.dart
ShanaiaBot de2c8ffa18 El Impostor v0.1 — app Flutter completa
Juego de deducción social para 3-20 jugadores.
Modo un solo móvil completamente funcional.
1000 palabras en 10 categorías.
Notas privadas, votación, adivinanza, revancha.
Material 3 dark theme.
Package: es.freetimelab.elimpostor
2026-04-04 00:50:04 +02:00

73 lines
2.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import 'estado/estado_juego.dart';
import 'tema/tema_app.dart';
import 'pantallas/pantalla_principal.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.light,
systemNavigationBarColor: TemaApp.colorFondo,
),
);
runApp(const ElImpostorApp());
}
class ElImpostorApp extends StatelessWidget {
const ElImpostorApp({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => EstadoJuego()..cargarBanco(),
child: MaterialApp(
title: 'El Impostor',
theme: TemaApp.obtenerTema(),
debugShowCheckedModeBanner: false,
home: const PantallaCarga(),
),
);
}
}
class PantallaCarga extends StatelessWidget {
const PantallaCarga({super.key});
@override
Widget build(BuildContext context) {
final estado = context.watch<EstadoJuego>();
if (estado.cargando || estado.banco == null) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('🎭', style: TextStyle(fontSize: 72)),
const SizedBox(height: 24),
Text(
'El Impostor',
style: Theme.of(context).textTheme.headlineLarge,
),
const SizedBox(height: 16),
const CircularProgressIndicator(color: TemaApp.colorAcento),
const SizedBox(height: 12),
Text(
'Cargando palabras...',
style: Theme.of(context).textTheme.bodyMedium,
),
],
),
),
);
}
return const PantallaPrincipal();
}
}