work_player.dart 1.83 KB
import 'package:Parlando/account/models/video_entity.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:Parlando/util/toast_utils.dart';
import 'package:fijkplayer/fijkplayer.dart';
import 'package:flutter/material.dart';
import 'package:Parlando/widgets/my_app_bar.dart';

class WorkPlayer extends StatefulWidget {
  final int id;

  const WorkPlayer({
    Key? key,
    required this.id,
  }) : super(key: key);

  @override
  WorkPlayerState createState() => WorkPlayerState();
}

class WorkPlayerState extends State<WorkPlayer> {
  final FijkPlayer player = FijkPlayer();

  bool isLoading = false;

  @override
  void initState() {
    super.initState();

    isLoading = true;
    DioUtils.instance.asyncRequestNetwork<VideoEntity>(
      Method.get,
      '${HttpApi.myVideos}/${widget.id}',
      params: [],
      onSuccess: (data) {
        isLoading = false;
        player.setDataSource(
          data!.data!.url!,
          autoPlay: true,
        );
        player.setLoop(0);
      },
      onError: (code, msg) {
        isLoading = false;
        Toast.show("获取数据失败,请稍后再试...");
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: MyAppBar(
          homeMenuHeader: Container(
            alignment: Alignment.center,
            child: const Text(
              "我的临境",
              style: TextStyle(
                color: Colors.white,
              ),
            ),
          ),
        ),
        body: Stack(
          children: [
            FijkView(
              height: MediaQuery.of(context).size.height,
              player: player,
              fit: FijkFit.fill,
            ),
          ],
        ));
  }

  @override
  void dispose() {
    player.release();
    super.dispose();
  }
}