Files
eatvio_app/lib/features/profile/presentation/pages/subs_screen.dart
2024-11-22 15:27:51 +03:00

70 lines
1.9 KiB
Dart

import 'package:eatvio_app/core/locator_service.dart';
import 'package:eatvio_app/core/widgets/loader.dart';
import 'package:eatvio_app/features/profile/presentation/bloc/sub_cubit/sub_cubit.dart';
import 'package:eatvio_app/features/profile/presentation/bloc/sub_cubit/sub_state.dart';
import 'package:eatvio_app/features/profile/presentation/widgets/sub_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
enum SubType { Subscribers, Subscriptions }
class SubsScreen extends StatefulWidget {
final SubType subType;
final String slug;
const SubsScreen({
super.key,
required this.slug,
required this.subType,
});
@override
State<SubsScreen> createState() => _SubsScreenState();
}
class _SubsScreenState extends State<SubsScreen> {
@override
Widget build(BuildContext context) {
return BlocProvider<SubCubit>(
create: (BuildContext context) => widget.subType == SubType.Subscriptions
? (sl<SubCubit>()
..getSubscriptions(
widget.slug,
))
: (sl<SubCubit>()
..getSubscribers(
widget.slug,
)),
child: BlocBuilder<SubCubit, SubState>(
builder: (BuildContext context, SubState state) {
return Scaffold(
appBar: AppBar(
title: Text(
widget.subType == SubType.Subscriptions ? 'Подписки' : 'Подписчики',
),
),
body: _buildStates(state),
);
},
),
);
}
_buildStates(SubState state) {
if (state is SubStateLoading) {
return Loader();
}
if (state is SubStateError) {
return Text(state.errorMessage);
}
if (state is SubStateLoaded) {
return ListView.builder(
itemBuilder: (context, index) => SubWidget(
subModel: state.subList[index],
),
itemCount: state.subList.length,
);
}
}
}