From fe65f15dafb0e35c4e98a6943b8baa15c6231b1a Mon Sep 17 00:00:00 2001 From: chansung park Date: Sun, 6 Jun 2021 23:35:24 +0900 Subject: [PATCH 01/10] construct header section in detail view --- client/ios/Podfile.lock | 2 +- client/lib/screens/detail_screen.dart | 89 ++++++------ client/lib/test-server.dart | 127 ++++++++++++++++++ client/lib/widgets/detail/abstract.dart | 10 ++ client/lib/widgets/detail/header.dart | 62 +++++++++ .../lib/widgets/detail/recommendataion.dart | 10 ++ client/lib/widgets/detail/repository.dart | 10 ++ client/lib/widgets/detail/youtube.dart | 38 ++++++ server/pkg/pr12er/messages.pb.go | 2 +- server/pkg/pr12er/metadata.pb.go | 2 +- server/pkg/pr12er/service.pb.go | 2 +- 11 files changed, 305 insertions(+), 49 deletions(-) create mode 100644 client/lib/test-server.dart create mode 100644 client/lib/widgets/detail/abstract.dart create mode 100644 client/lib/widgets/detail/header.dart create mode 100644 client/lib/widgets/detail/recommendataion.dart create mode 100644 client/lib/widgets/detail/repository.dart create mode 100644 client/lib/widgets/detail/youtube.dart diff --git a/client/ios/Podfile.lock b/client/ios/Podfile.lock index 83289842..aedb1a88 100644 --- a/client/ios/Podfile.lock +++ b/client/ios/Podfile.lock @@ -30,4 +30,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c -COCOAPODS: 1.10.1 +COCOAPODS: 1.10.0 diff --git a/client/lib/screens/detail_screen.dart b/client/lib/screens/detail_screen.dart index bda491f4..58591383 100644 --- a/client/lib/screens/detail_screen.dart +++ b/client/lib/screens/detail_screen.dart @@ -1,7 +1,11 @@ import 'package:flutter/material.dart'; import 'package:pr12er/protos/pkg/pr12er/messages.pb.dart'; -import 'package:youtube_player_flutter/youtube_player_flutter.dart'; +import 'package:pr12er/widgets/detail/abstract.dart'; +import 'package:pr12er/widgets/detail/header.dart'; +import 'package:pr12er/widgets/detail/recommendataion.dart'; +import 'package:pr12er/widgets/detail/repository.dart'; import 'package:pr12er/utils/extractor.dart'; +import 'package:pr12er/widgets/detail/youtube.dart'; class DetailScreenArguments { final Video video; @@ -12,6 +16,15 @@ class DetailScreenArguments { class DetailScreen extends StatelessWidget { static const String routeName = "detail_app"; + Widget getHorizontalLine() { + return const Divider( + height: 5, + color: Colors.black, + indent: 5, + endIndent: 5, + ); + } + @override Widget build(BuildContext context) { final args = @@ -19,52 +32,38 @@ class DetailScreen extends StatelessWidget { ModalRoute.of(context)!.settings.arguments as DetailScreenArguments; return Scaffold( - appBar: AppBar( - leading: IconButton( - icon: const Icon(Icons.arrow_back), - onPressed: () { - Navigator.pop(context); - }, - ), - title: Text(args.video.title, - key: const ValueKey("$routeName/appBar/title")), + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () { + Navigator.pop(context); + }, ), - body: Detail(youtubeId: extractYoutubeId(args.video.link))); - } -} - -class Detail extends StatefulWidget { - final String youtubeId; - - const Detail({required this.youtubeId}); - - @override - _DetailState createState() => _DetailState(); -} - -class _DetailState extends State { - late final YoutubePlayerController _controller; - - @override - void initState() { - super.initState(); - - _controller = YoutubePlayerController( - initialVideoId: widget.youtubeId, - ); - } - - @override - Widget build(BuildContext context) { - return YoutubePlayerBuilder( - player: YoutubePlayer( - controller: _controller, + title: Text(args.video.title, + key: const ValueKey("$routeName/appBar/title")), + ), + body: CustomScrollView( + slivers: [ + SliverList( + delegate: SliverChildListDelegate([ + YoutubeWidget(youtubeId: extractYoutubeId(args.video.link)), + Container( + margin: const EdgeInsets.only(top: 5, left: 10, right: 10), + child: Column( + children: [ + HeaderWidget(), + const SizedBox(height: 10), + getHorizontalLine(), + const SizedBox(height: 10), + AbstractWidget(), + RepositoryWidget(), + RecommentationWidget(), + ], + ), + ) + ])) + ], ), - builder: (context, player) { - return Column( - children: [player], - ); - }, ); } } diff --git a/client/lib/test-server.dart b/client/lib/test-server.dart new file mode 100644 index 00000000..aed4a38a --- /dev/null +++ b/client/lib/test-server.dart @@ -0,0 +1,127 @@ +import 'package:grpc/grpc.dart'; +import 'package:pr12er/protos/pkg/pr12er/messages.pb.dart'; + +import 'protos/pkg/pr12er/service.pbgrpc.dart'; + +class GreeterService extends Pr12erServiceBase { + @override + Future getHello(ServiceCall call, HelloRequest request) async { + return HelloResponse()..body = 'Hello, ${request.body}'; + } + + @override + Future getVideos( + ServiceCall call, GetVideosRequest request) async { + List