패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소AppCheap/flutter_shopping_video

flutter_shopping_video

AppCheap/flutter_shopping_video open-source repository details.

flutter_shopping_video 프로젝트 이미지
스타
7
포크
8
최근 푸시(UTC)
2023. 8. 7.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

Flutter Shopping Video: Create video player layout like tiktok.

Features

Video player layout:

Getting started

First, add video_shop_flutter as a dependency in your pubspec.yaml file.

Example

import 'package:example/service/service.dart';
import 'package:example/widgets/like_widget.dart';
import 'package:flutter/material.dart';
import 'package:video_shop_flutter/page/page.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      debugShowCheckedModeBanner: false,
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<Map<String, dynamic>> data = [];
  ApiService service = ApiService();
  List<String> videoWatched = [];

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

  @override
  void didChangeDependencies() async {
    List<Map<String, dynamic>> response = await service.mapData(1, 4);
    setState(() {
      data = response;
    });
    super.didChangeDependencies();
  }

  @override
  Widget build(BuildContext context) {
    debugPrint("\n data length: ${data.length} \n");

    return Scaffold(
      body: VideoShopFlutter(
        // Called every time video page is changed.
        updateLastSeenPage: (lastSeenPageIndex) {},
        // Video data.
        listData: data,
        // Watched videos, it's updated every time new video is watched.
        videoWatched: videoWatched,
        pageSize: 4,
        enableBackgroundContent: true,
        // Load more video data.
        loadMore: (page, pageSize) async {
          // Just for test.
          debugPrint("load more...");
          debugPrint("Video $videoWatched");
          List<Map<String, dynamic>> newData =
              await service.mapData((page + 2), 4);
          if (newData.isNotEmpty) {
            setState(() {
              data = [...data, ...newData];
            });
          }
          //.
        },
        // Your custom widget.
        likeWidget: (video, updateData) {
          return LikeWidget(
            likes: video?.likes ?? 0,
            liked: video?.liked ?? false,
            updateData: updateData,
            id: video?.id,
          );
        },
      ),
    );
  }
}

Note

  • listData in VideoShopFlutter(listData: playList,)

    The listData is a list of Map, each Map is a Video object and video object required some field of data like this:

     {
       'id': 123,
       'url': 'https://video.mp4'
       'thumbnail': 'https://thumbnail.jpg'
       'video_title': 'title',
       'description': 'description',
       'likes': 5 ,
       'liked': true,
       'product_name': 'productName',
       'product_permalink': 'productPermalink',
       'stock_status': 'stockStatus',
     }
    

    Please follow above format data.

    The pageSize is size of list data every time load more data, it affects when to load more data.

    The loadMore is a function to load more data, it is called every time current PageView is at position: listData.length - (pageSize/2)

Appcheap GitHub avatar
GitHub 작성자

Appcheap ↗

언어DartC++CMakeRubyHTMLCSwiftKotlinObjective-C

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 5 개

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗