Тайна флаттера: проблемы с объединением флаттера плеера Youtube и скроллера Tik Tok LIke

Я использую библиотеку, которая принимает список виджетов и позволяет вам переходить от одного виджета к другому в системе смахивания типа Tik Tok. В виджетах, которые я пытаюсь перебрать, есть видеоролики Youtube.

Моя проблема в том, что он позволит мне провести к индексу 1, тогда похоже, что он собирается индексировать 2. Однако сразу после того, как он зафиксируется в позиции, загружается видео youtube из индекса 1. Я потратил около 9 часов, пытаясь понять это, и решил, что пришло время попросить о помощи, ха-ха.

Ниже приведены ссылки на две библиотеки, которые я использовал, а внизу - мой код. Я объединил несколько файлов, чтобы склеить их все вместе.

https://github.com/dmt195/tiktok-flutter-plugin/blob/master/lib/tiktoklikescroller.dart

https://github.com/sarbagyastha/youtube_player_flutter

Еще одна странная вещь, о которой я, вероятно, должен упомянуть, это то, что я заставил ее работать около часа сегодня днем, но так и не сохранил копию. Надеюсь, я усвоил урок в этом отношении.

Заранее благодарим всех, кто решает эту проблему!

import 'package:flutter/material.dart';
import 'package:youtube_player_flutter/youtube_player_flutter.dart';
import 'package:tiktoklikescroller/tiktoklikescroller.dart';

class Lv7 extends StatefulWidget {
final YoutubePlayerController thecontroller;
 Lv7(this.thecontroller);
 @override
 _Lv7State createState() => _Lv7State();
}

class _Lv7State extends State<Lv7> {
Widget trainScreen;

@override
Widget build(BuildContext context) {
trainScreen = Stack(
  children: [
    Container(
      decoration: BoxDecoration(
        color: Color.fromRGBO(0, 0, 0, 0),
      ),
    ),
    Column(
      children: [
        YoutubePlayer(
          controller: widget.thecontroller,
          showVideoProgressIndicator: true,
          controlsTimeOut: Duration(minutes: 1),
        ),
      ],
    ),
  ],
);
return trainScreen;
}
}


 final upNext = [
  youtube(
    'nm8QQO4nDJc',
    7,
  ),
  youtube(
    'N3W3o8ijb7M',
    7,
  ),
  youtube(
    'JzHqrk9uKso',
    7,
  ),
];
youtube(videoCode, phase) {
YoutubePlayerController thecontroller = YoutubePlayerController(
  initialVideoId: videoCode,
  flags: const YoutubePlayerFlags(
    mute: false,
    autoPlay: false,
    disableDragSeek: false,
    loop: false,
    isLive: false,
    forceHD: false,
    enableCaption: true,
  ),
);

if (phase == 7) {
  return Lv7(thecontroller);
}
 }

 class Train extends StatefulWidget {
@override
_TrainState createState() => _TrainState();
}

class _TrainState extends State<Train> {
@override
Widget build(BuildContext context) {



return MaterialApp(
  home: Scaffold(
    backgroundColor: Colors.black,
    body: Stack(
      children: [
        TikTokStyleFullPageScroller(
          contentSize: upNext.length,
          swipeThreshold: 0.2,
          swipeVelocityThreshold: 2000,
          animationDuration: const Duration(milliseconds: 300),
          builder: (BuildContext context, int index) {
            print(index);
            return  upNext[index];
          },
        ),
      ],
    ),
  ),
);
}
}

0 ответов

Другие вопросы по тегам