LogoLupe

Red Social Móvil

Descripción del proyecto

Una aplicación de red social moderna construida con Flutter y Firebase. Incluye todas las características esperadas de una red social moderna, como feed de publicaciones, mensajería en tiempo real y compartir multimedia.

Características principales

  • Feed de publicaciones
  • Chat en tiempo real
  • Historias efímeras
  • Sistema de seguidores
  • Notificaciones push
  • Compartir multimedia
  • Perfiles personalizables
  • Búsqueda avanzada

Stack tecnológico

Frontend

  • Flutter 3.0
  • Bloc para estado
  • GetIt para DI
  • Cached Network Image

Backend

  • Firebase Auth
  • Cloud Firestore
  • Storage
  • Cloud Functions

Características avanzadas

  • Video streaming
  • Compresión de imágenes
  • Geolocalización
  • Analytics y tracking

Ejemplos de código

Bloc de Publicaciones

// lib/blocs/post_bloc.dart
class PostBloc extends Bloc<PostEvent, PostState> {
  final PostRepository repository;

  PostBloc({required this.repository}) : super(PostInitial()) {
    on<LoadPosts>((event, emit) async {
      emit(PostLoading());
      try {
        final posts = await repository.getPosts();
        emit(PostLoaded(posts));
      } catch (e) {
        emit(PostError(e.toString()));
      }
    });

    on<CreatePost>((event, emit) async {
      try {
        await repository.createPost(event.post);
        add(LoadPosts());
      } catch (e) {
        emit(PostError(e.toString()));
      }
    });
  }
}

Pantalla de Chat

// lib/features/chat/chat_screen.dart
class ChatScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<ChatBloc, ChatState>(
      builder: (context, state) {
        return Scaffold(
          appBar: AppBar(
            title: Text(state.chatUser.name),
            actions: [
              IconButton(
                icon: Icon(Icons.video_call),
                onPressed: () => _startVideoCall(context),
              ),
            ],
          ),
          body: Column(
            children: [
              Expanded(
                child: MessagesList(messages: state.messages),
              ),
              MessageInput(
                onSend: (message) {
                  context.read<ChatBloc>().add(
                    SendMessage(message),
                  );
                },
              ),
            ],
          ),
        );
      },
    );
  }

  void _startVideoCall(BuildContext context) {
    // Implementación de videollamada
  }
}

Recursos adicionales

Descarga la aplicación y explora el código: