Skip to content

i am using better player but in preloadpageview its play all video at time #41

@Karanvthakur148

Description

@Karanvthakur148

import 'package:app/service/ServerDetails.dart';
import 'package:app/service/web_service.dart';
import 'package:better_player/better_player.dart';
// import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:get/get.dart';
import 'package:preload_page_view/preload_page_view.dart';
// import 'package:video_player/video_player.dart';
import 'package:wakelock/wakelock.dart';

class FunBoxScreen extends StatefulWidget {
const FunBoxScreen({Key key}) : super(key: key);

@OverRide
State createState() => _FunBoxScreenState();
}

class _FunBoxScreenState extends State {
int _currentPage = 0;
ScrollController _scrollController = ScrollController();
int currentIndex = 0;
bool loading = true;
bool tempLoading = true;
void updateCurrentIndex() {
_currentPage + 1;
}

@OverRide
void initState() {
getFunBoxData();
Wakelock.enable();

super.initState();

setState(() {});

}

final PageController controller = PageController(
initialPage: 0,
);

List listItem = [];
Future getFunBoxData({bool isRefresh = false}) async {
loading = true;
List getList = await Webservice.getFunBoxData(_currentPage, 10);
if (getList.isEmpty) {
Fluttertoast.showToast(msg: 'no more data');
} else {
_currentPage = _currentPage + 1;
for (int i = 0; i < getList.length; i++) {
listItem.add(getList[i]);
}
setState(() {});
}
await Future.delayed(Duration(seconds: 2));
loading = false;
setState(() {});
}

@OverRide
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: listItem.isEmpty
? SizedBox()
: currentIndex == listItem.length
? Padding(
padding: const EdgeInsets.only(bottom: 10),
child: ElevatedButton(
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.all(Colors.red),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: BorderSide(color: Colors.black)),
),
),
onPressed: () {
getFunBoxData();
setState(() {});
},
child: Text(
"Load More",
style: TextStyle(
fontSize: 20.sp, fontWeight: FontWeight.bold),
),
),
)
: SizedBox(),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
body: listItem.isEmpty
? Center(child: CircularProgressIndicator())
: PreloadPageView.builder(
onPageChanged: (value) {
currentIndex = value + 1;
setState(() {});
},
controller: PreloadPageController(initialPage: 0),
scrollDirection: Axis.vertical,
itemCount: listItem.length,
preloadPagesCount: 5,
itemBuilder: (context, index) {
String url = ServerDetails.getVideo + listItem[index]["media"];

            if (listItem[index]["type"] == "image") {
              return imageScreen(listItem, index);
            } else {
              return VideoScreen(url: url);
            }
          },
        ),
);

}

Widget imageScreen(List listItem, index) {
return Container(
color: Colors.black,
height: double.maxFinite,
child: Image.network(
ServerDetails.getImages + listItem[index]["media"],
),
);
}

@OverRide
void dispose() {
Wakelock.disable();

super.dispose();

}
}

class VideoScreen extends StatefulWidget {
final String url;
const VideoScreen({Key key, this.url}) : super(key: key);

@OverRide
_VideoScreenState createState() => _VideoScreenState();
}

class _VideoScreenState extends State {
BetterPlayerController _betterPlayerController;

@OverRide
void initState() {
super.initState();
BetterPlayerControlsConfiguration configuration =
BetterPlayerControlsConfiguration(
showControls: true,
enableFullscreen: false,
enableProgressBar: false,
enableSkips: false,
enableAudioTracks: false,
enablePlayPause: false,
enableRetry: false,
enableMute: false,
enableOverflowMenu: false,
enableProgressText: false,
enablePip: false);
BetterPlayerConfiguration betterPlayerConfiguration =
BetterPlayerConfiguration(
fullScreenByDefault: false,
deviceOrientationsOnFullScreen: [DeviceOrientation.portraitUp],
deviceOrientationsAfterFullScreen: [DeviceOrientation.portraitUp],
autoPlay: true,
aspectRatio: 9 / 16,
fit: BoxFit.contain,
controlsConfiguration: configuration,
);
var dataSource =
BetterPlayerDataSource(BetterPlayerDataSourceType.network, widget.url);

_betterPlayerController = BetterPlayerController(betterPlayerConfiguration);
_betterPlayerController.setupDataSource(dataSource);

}

@OverRide
void dispose() {
_betterPlayerController.dispose();
super.dispose();
}

@OverRide
Widget build(BuildContext context) {
return Container(
color: Colors.black,
height: Get.height,
width: Get.width,
child: BetterPlayer(controller: _betterPlayerController),
);
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions