Skip to content

Commit 23849da

Browse files
committed
video page update
1 parent 2aed736 commit 23849da

File tree

12 files changed

+63
-48
lines changed

12 files changed

+63
-48
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,5 @@ app.*.map.json
4242
/android/app/debug
4343
/android/app/profile
4444
/android/app/release
45+
46+
lib/credential.dart
File renamed without changes.

lib/app/modules/auth/controllers/auth_controller.dart renamed to lib/app/modules/auth_page/controllers/auth_controller.dart

File renamed without changes.

lib/app/modules/auth/controllers/signup_controller.dart renamed to lib/app/modules/auth_page/controllers/signup_controller.dart

File renamed without changes.

lib/app/modules/auth/views/auth_view.dart renamed to lib/app/modules/auth_page/views/auth_View.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:flutter_svg/svg.dart';
33
import 'package:get/get.dart';
44
import 'package:google_fonts/google_fonts.dart';
55
import 'package:study_mate/app/global/widgets/card_box.dart';
6-
import 'package:study_mate/app/modules/auth/views/signup_view.dart';
6+
import 'package:study_mate/app/modules/auth_page/views/signup_view.dart';
77

88
import '../controllers/auth_controller.dart';
99
import 'forget_password_view.dart';

lib/app/modules/auth/views/forget_password_view.dart renamed to lib/app/modules/auth_page/views/forget_password_view.dart

File renamed without changes.
File renamed without changes.

lib/app/modules/video_lecture/controllers/video_lecture_controller.dart

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
// ignore_for_file: deprecated_member_use
22

3+
import 'dart:convert';
4+
35
import 'package:get/get.dart';
46
import 'package:study_mate/app/services/firebase/firebase_service.dart';
57
import 'package:study_mate/app/services/firebase/model/lecture_model.dart';
8+
import 'package:study_mate/credential.dart';
69
import 'package:url_launcher/url_launcher.dart';
10+
import 'package:http/http.dart' as http;
711

812
const dummyData = [
913
{
@@ -15,7 +19,7 @@ const dummyData = [
1519
"url":
1620
"https://www.youtube.com/playlist?list=PLxCzCOWd7aiEwaANNt3OqJPVIxwp2ebiT",
1721
"description": "Gate Smasher",
18-
"thumbnailUrl": "https://i.ytimg.com/vi/3cU__spdMIw/maxresdefault.jpg"
22+
"thumbnailUrl": "https://img.youtube.com/vi/Pn9SXXVqDQU/sddefault.jpg"
1923
},
2024
{
2125
"title": "CodeWithHarry",
@@ -178,6 +182,13 @@ const dummyData = [
178182
"https://www.youtube.com/playlist?list=PL9gnSGHSqcno1G3XjUbwzXHL8_EttOuKk",
179183
"description": "Gate Smasher",
180184
"thumbnailUrl": "https://i.ytimg.com/vi/1ZGJzvkcLsA/maxresdefault.jpg"
185+
},
186+
{
187+
"title": "College Wallah",
188+
"url":
189+
"https://www.youtube.com/watch?v=9roJTTghZJI&ab_channel=CollegeWallah",
190+
"description": "Gate Smasher",
191+
"thumbnailUrl": "https://i.ytimg.com/vi/1ZGJzvkcLsA/maxresdefault.jpg"
181192
}
182193
]
183194
},
@@ -191,7 +202,7 @@ class VideoLectureController extends GetxController {
191202
/// a Future object that resolves to a List of Subject objects.
192203
Future<List<Subject>> getDemoLecture() async {
193204
// emulate network delay
194-
await Future.delayed(const Duration(seconds: 1));
205+
//await Future.delayed(const Duration(seconds: 1));
195206

196207
// return dummy data
197208
return dummyData.map((e) => Subject.fromMap(e)).toList();
@@ -209,4 +220,13 @@ class VideoLectureController extends GetxController {
209220
Future<void> launchURL(String url) async => (await canLaunch(url))
210221
? await launch(url)
211222
: Get.snackbar("Error", "Could not launch $url");
223+
224+
Future<String> getPlaylistThumbnail(String playlistLink) async {
225+
final playlistId = playlistLink.split('list=')[1];
226+
final apiUrl =
227+
'https://www.googleapis.com/youtube/v3/playlists?part=snippet&id=$playlistId&key=$API_KEY';
228+
final response = await http.get(Uri.parse(apiUrl));
229+
final data = jsonDecode(response.body);
230+
return data['items'][0]['snippet']['thumbnails']['high']['url'];
231+
}
212232
}

lib/app/modules/video_lecture/views/video_lecture_view.dart

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
2+
13
import 'package:cached_network_image/cached_network_image.dart';
24
import 'package:flutter/material.dart';
35
import 'package:get/get.dart';
@@ -76,15 +78,20 @@ class VideoLectureView extends GetView<VideoLectureController> {
7678
child: SizedBox(
7779
width: 150,
7880
height: 84,
79-
child: CachedNetworkImage(
80-
imageUrl: playlist.thumbnailUrl ?? '',
81-
fit: BoxFit.cover,
82-
placeholder: (context, url) => Container(
83-
color: Colors.grey,
84-
),
85-
errorWidget: (context, url, error) =>
86-
const Icon(Icons.error),
87-
),
81+
child: FutureBuilder(
82+
future: controller.getPlaylistThumbnail(playlist.url),
83+
builder: (context, snap) {
84+
if (snap.hasData) {
85+
return CachedNetworkImage(
86+
imageUrl: snap.data.toString(),
87+
fit: BoxFit.cover,
88+
);
89+
} else if (!snap.hasData) {
90+
return const LinearProgressIndicator();
91+
} else {
92+
return const Icon(Icons.error);
93+
}
94+
}),
8895
)),
8996
),
9097
Padding(
@@ -124,3 +131,4 @@ class VideoLectureView extends GetView<VideoLectureController> {
124131
),
125132
);
126133
}
134+

lib/app/routes/app_pages.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import 'package:get/get.dart';
22

33
import '../modules/about_page/bindings/about_page_binding.dart';
44
import '../modules/about_page/views/about_page_view.dart';
5-
import '../modules/auth/bindings/auth_binding.dart';
6-
import '../modules/auth/views/auth_view.dart';
5+
import '../modules/auth_page/bindings/auth_binding.dart';
6+
import '../modules/auth_page/views/auth_View.dart';
77
import '../modules/course/bindings/course_binding.dart';
88
import '../modules/course/views/course_view.dart';
99
import '../modules/create_notice/bindings/create_notice_binding.dart';

0 commit comments

Comments
 (0)