look_video_page.dart 1.86 KB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:wow_english/pages/section/subsection/base_section/state.dart';
import 'package:wow_english/pages/video/lookvideo/bloc/look_video_bloc.dart';
import 'package:wow_english/pages/video/lookvideo/widgets/video_widget.dart';
import 'package:wow_english/utils/log_util.dart';

class LookVideoPage extends StatelessWidget {
  const LookVideoPage(
      {super.key,
      this.videoUrl,
      this.typeTitle,
      this.courseLessonId,
      this.isTopic = false});

  ///暂时不删,留着以后扩展。目前的逻辑是null,进入后请求课程数据
  final String? videoUrl;
  final String? typeTitle;
  final String? courseLessonId;
  final bool isTopic;

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (BuildContext context) =>
          LookVideoBloc(videoUrl, typeTitle, courseLessonId, isTopic)
            ..add(RequestDataEvent()),
      child: Builder(builder: (context) => _buildPage(context)),
    );
  }
}

Widget _buildPage(BuildContext context) {
  return BlocBuilder<LookVideoBloc, BaseSectionState>(
      builder: (context, state) {
    final bloc = BlocProvider.of<LookVideoBloc>(context);
    Log.d("WQF lookvideo BlocBuilder bloc.videoUr=${bloc.videoUrl}");
    return Center(
      child: bloc.videoUrl?.isNotEmpty == true
          ? Container(
              color: Colors.white,
              child: VideoWidget(
                videoUrl: bloc.videoUrl ?? '',
                typeTitle: bloc.typeTitle ?? '',
                courseLessonId: bloc.courseLessonId ?? '',
                isTopic: bloc.isTopic,
              ))
          //todo 空了需要抽一个通用的loading组件
          : Container(
              color: Colors.white,
              child: const CircularProgressIndicator(),
            ),
    );
  });
}