add in the discovery section
continuous-integration/drone/push Build is passing Details

AD_LDE_EKA
Lucas Delanier 2 years ago
parent ddf6bf8638
commit 845476d057

@ -541,6 +541,13 @@
</list>
</value>
</entry>
<entry key="google_mobile_ads">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/google_mobile_ads-3.0.0/lib" />
</list>
</value>
</entry>
<entry key="gradiantbutton">
<value>
<list>
@ -961,6 +968,41 @@
</list>
</value>
</entry>
<entry key="visibility_detector">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/visibility_detector-0.3.3/lib" />
</list>
</value>
</entry>
<entry key="webview_flutter">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter-4.2.2/lib" />
</list>
</value>
</entry>
<entry key="webview_flutter_android">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_android-3.9.2/lib" />
</list>
</value>
</entry>
<entry key="webview_flutter_platform_interface">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_platform_interface-2.4.0/lib" />
</list>
</value>
</entry>
<entry key="webview_flutter_wkwebview">
<value>
<list>
<option value="$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_wkwebview-3.7.2/lib" />
</list>
</value>
</entry>
<entry key="win32">
<value>
<list>
@ -1066,6 +1108,7 @@
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/geolocator_web-2.1.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/geolocator_windows-0.1.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/google_fonts-4.0.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/google_mobile_ads-3.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/gradiantbutton-0.0.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/gradient_borders-1.0.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/http-0.13.6/lib" />
@ -1125,6 +1168,11 @@
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_codec-1.1.7/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_graphics_compiler-1.1.7/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/vector_math-2.1.4/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/visibility_detector-0.3.3/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter-4.2.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_android-3.9.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_platform_interface-2.4.0/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/webview_flutter_wkwebview-3.7.2/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/win32-5.0.6/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xdg_directories-1.0.1/lib" />
<root url="file://$USER_HOME$/AppData/Local/Pub/Cache/hosted/pub.dev/xml-6.3.0/lib" />

@ -75,5 +75,6 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation(platform("com.google.firebase:firebase-bom:32.2.0"))
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.android.gms:play-services-ads:22.2.0'
}
apply plugin: 'com.google.gms.google-services'

@ -31,6 +31,9 @@ package="com.example.justmusic">
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-9896583895323467~5308111198"/>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

@ -1,6 +1,12 @@
package com.example.justmusic
import android.os.Bundle
import com.google.android.gms.ads.MobileAds
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MobileAds.initialize(this)
}
}

@ -9,6 +9,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

@ -0,0 +1,33 @@
import 'dart:io';
class AdHelper {
static String get bannerAdUnitId {
if (Platform.isAndroid) {
return 'ca-app-pub-3940256099942544/6300978111';
} else if (Platform.isIOS) {
return 'ca-app-pub-3940256099942544/2934735716';
} else {
throw new UnsupportedError('Unsupported platform');
}
}
static String get interstitialAdUnitId {
if (Platform.isAndroid) {
return "ca-app-pub-3940256099942544/1033173712";
} else if (Platform.isIOS) {
return "ca-app-pub-3940256099942544/4411468910";
} else {
throw new UnsupportedError("Unsupported platform");
}
}
static String get rewardedAdUnitId {
if (Platform.isAndroid) {
return "ca-app-pub-3940256099942544/5224354917";
} else if (Platform.isIOS) {
return "ca-app-pub-3940256099942544/1712485313";
} else {
throw new UnsupportedError("Unsupported platform");
}
}
}

@ -0,0 +1,61 @@
import 'package:flutter/Material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:gradient_borders/box_borders/gradient_box_border.dart';
import 'package:ionicons/ionicons.dart';
import 'package:justmusic/values/constants.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
class AdComponent extends StatefulWidget {
final Container ad;
const AdComponent({super.key, required this.ad});
@override
State<AdComponent> createState() => _AdComponentState();
}
class _AdComponentState extends State<AdComponent> {
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(1000),
color: grayColor,
),
child: Row(
children: [
Icon(
Ionicons.information_circle,
color: grayText.withOpacity(0.4),
size: 15,
),
SizedBox(
width: 4,
),
Text(
"Sponsorisé",
style: GoogleFonts.plusJakartaSans(
color: grayText.withOpacity(0.4), fontWeight: FontWeight.w500, fontSize: 12),
),
],
)),
],
),
SizedBox(height: 10),
widget.ad,
],
));
}
}

@ -3,11 +3,11 @@ import 'package:audioplayers/audioplayers.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:justmusic/screens/add_friend_screen.dart';
import 'package:justmusic/screens/explanations_screen.dart';
import 'package:justmusic/screens/feed_screen.dart';
@ -28,10 +28,16 @@ import 'package:timezone/data/latest.dart' as tz;
Future<void> main() async {
tz.initializeTimeZones();
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await FirebaseMessaging.instance.requestPermission(sound: true);
try {
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
} catch (e) {
print('Error initializing Firebase: $e');
}
MobileAds.instance.initialize();
//await FirebaseMessaging.instance.requestPermission(sound: true);
runApp(const MyApp());
}
@ -58,7 +64,7 @@ class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
checkSignIn();
//checkSignIn();
}
Future<userJustMusic.User?> checkSignIn() async {

@ -5,8 +5,11 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:justmusic/main.dart';
import 'package:tuple/tuple.dart';
import '../ad_helper.dart';
import '../components/ad_component.dart';
import '../components/post_component.dart';
import '../components/top_nav_bar_component.dart';
import '../model/Post.dart';
@ -25,19 +28,23 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
late Animation<double> animation;
late List<Post> friendFeed;
Timer? timer;
late BannerAd _bannerAd;
late List<Post> discoveryFeed;
late Tuple2<List<Post>, List<Post>> displayFeed;
bool isDismissed = true;
bool choiceFeed = true;
PageController controller = PageController();
final String AdUnitId = "ca-app-pub-9896583895323467~5308111198";
bool isBannerAdReady = false;
@override
void initState() {
super.initState();
friendFeed = MyApp.postViewModel.postsFriends;
discoveryFeed = MyApp.postViewModel.bestPosts;
createWidgetAd();
animationController = AnimationController(
vsync: this,
duration: Duration(milliseconds: 400),
@ -54,6 +61,32 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
});
}
createWidgetAd() {
try {
_bannerAd = BannerAd(
size: AdSize.banner,
adUnitId: AdHelper.bannerAdUnitId,
listener: BannerAdListener(
onAdLoaded: (Ad ad) {
setState(() {
isBannerAdReady = true;
});
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
print("error loading ad!");
},
onAdOpened: (Ad ad) => print("Ad open!"),
onAdClosed: (Ad ad) => print("Ad closed!"),
onAdImpression: (Ad ad) => print("Ad impressed!"),
),
request: const AdRequest());
_bannerAd.load();
} catch (e) {
print(e);
}
}
@override
void dispose() {
controller.dispose();
@ -120,6 +153,15 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
Tuple2(MyApp.postViewModel.postsFriends.reversed.toList(), MyApp.postViewModel.bestPosts.reversed.toList());
bool empty =
(choiceFeed == true && displayFeed.item1.isEmpty) || (choiceFeed == false && displayFeed.item2.isEmpty);
final AdWidget adWidget = AdWidget(ad: _bannerAd);
final Container adContainer = Container(
alignment: Alignment.center,
width: _bannerAd.size.width.toDouble(),
height: _bannerAd.size.height.toDouble(),
child: adWidget,
);
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: bgColor,
@ -204,7 +246,7 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
displacement: 20,
triggerMode: RefreshIndicatorTriggerMode.onEdge,
onRefresh: _refresh,
child: ListView.builder(
child: ListView.separated(
physics: const BouncingScrollPhysics(parent: AlwaysScrollableScrollPhysics()),
clipBehavior: Clip.none,
shrinkWrap: false,
@ -216,6 +258,16 @@ class _FeedScreenState extends State<FeedScreen> with SingleTickerProviderStateM
PostComponent(callback: openDetailPost, post: displayFeed.item2[index], index: index),
);
},
separatorBuilder: (BuildContext context, int index) {
print("separator");
return isBannerAdReady
? Padding(
padding: const EdgeInsets.only(bottom: 40),
child: AdComponent(
ad: adContainer,
))
: Container();
},
),
),
),

@ -608,6 +608,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.4"
google_mobile_ads:
dependency: "direct main"
description:
name: google_mobile_ads
sha256: "24ee4e9546866cc15ebe565dabf6a6c485ce5fbec0645fde22799800532000f0"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
gradiantbutton:
dependency: "direct main"
description:
@ -1085,6 +1093,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
visibility_detector:
dependency: transitive
description:
name: visibility_detector
sha256: "15c54a459ec2c17b4705450483f3d5a2858e733aee893dcee9d75fd04814940d"
url: "https://pub.dev"
source: hosted
version: "0.3.3"
webview_flutter:
dependency: transitive
description:
name: webview_flutter
sha256: "789d52bd789373cc1e100fb634af2127e86c99cf9abde09499743270c5de8d00"
url: "https://pub.dev"
source: hosted
version: "4.2.2"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
sha256: d936a09fbfd08cb78f7329e0bbacf6158fbdfe24ffc908b22444c07d295eb193
url: "https://pub.dev"
source: hosted
version: "3.9.2"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
sha256: "564ef378cafc1a0e29f1d76ce175ef517a0a6115875dff7b43fccbef2b0aeb30"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
sha256: "5fa098f28b606f699e8ca52d9e4e11edbbfef65189f5f77ae92703ba5408fd25"
url: "https://pub.dev"
source: hosted
version: "3.7.2"
win32:
dependency: transitive
description:

@ -75,6 +75,7 @@ dependencies:
timezone: ^0.9.2
firebase_messaging: ^14.6.5
cached_network_image: ^3.2.3
google_mobile_ads: ^3.0.0
dev_dependencies:
flutter_test:

Loading…
Cancel
Save