reels method

ReelsWidgetBundle reels(
  1. BuildContext context, {
  2. required dynamic profileFunction({
    1. required Media? avatar,
    2. required Media? banner,
    3. required String? displayname,
    4. required int userID,
    5. required String username,
    }),
})

Implementation

ReelsWidgetBundle reels(
  BuildContext context, {
  required Function({
    required int userID,
    required String username,
    required String? displayname,
    required Media? avatar,
    required Media? banner,
  }) profileFunction,
}) {
  final controller = Get.put(ReelsController(service: service));

  Widget widget = Obx(
    () => controller.reelsList.value == null
        ? Center(
            child: CupertinoActivityIndicator(),
          )
        : PageView(
            scrollDirection: Axis.vertical,
            controller: controller.pageController,
            onPageChanged: (newIndex) {
              if (newIndex == controller.pageIndex.value) return;

              // Eski sayfadaki videoyu durdur
              final oldTag = controller.pageIndex.value.toString();
              if (Get.isRegistered<ReelsScreenController>(tag: oldTag)) {
                Get.find<ReelsScreenController>(tag: oldTag).stopReels();
              }

              controller.pageIndex.value = newIndex;

              // Yeni sayfadaki videoyu başlat
              final newTag = newIndex.toString();
              if (Get.isRegistered<ReelsScreenController>(tag: newTag)) {
                Get.find<ReelsScreenController>(tag: newTag).startReels();
              }
            },
            children: List.generate(
              controller.reelsList.value!.length,
              (index) {
                return ReelsScreen(
                  reels: controller.reelsList.value![index],
                  index: index,
                  profileFunction: profileFunction,
                );
              },
            ),
          ),
  );

  return ReelsWidgetBundle(
    widget: Rxn(widget),
    next: () async => controller.nextReels(),
    back: () async => controller.backReels(),
  );
}