Skip to content

Commit

Permalink
added google ads and improve some ui
Browse files Browse the repository at this point in the history
  • Loading branch information
mixin27 committed Dec 10, 2024
1 parent a26177f commit 3e16bc5
Show file tree
Hide file tree
Showing 25 changed files with 1,132 additions and 350 deletions.
78 changes: 52 additions & 26 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -1,43 +1,69 @@
name: Run analyze

concurrency:
group: $-$
cancel-in-progress: true
name: Analysis and checking

on:
push:
branches: main
branches:
- "main"
paths-ignore:
- "**/README.md"
pull_request:
branches: main
branches:
- "main"
workflow_dispatch:

jobs:
drive:
check:
name: 🏗 Code analysing and checking
runs-on: ubuntu-latest
env:
JAVA_VERSION: "17"
FLUTTER_VERSION: "3.24.3"

steps:
- name: 📚 Git Checkout
uses: actions/checkout@v1
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: ${{env.JAVA_VERSION}}

- name: 🐦 Setup Flutter
uses: subosito/flutter-action@v2
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{env.FLUTTER_VERSION}}
channel: "stable"
cache: true
cache-key: flutter-:os:-:channel:-:version:-:arch:-:hash:-${{ hashFiles('**/pubspec.lock') }}

- name: 📦 Install Dependencies
run: |
flutter packages get
- name: 📦 Package install
run: flutter pub get

- name: ✨ Check Formatting
run: dart format --line-length 80 --set-exit-if-changed lib test
- name: Download Google Play Services JSON
id: google_services
uses: timheuer/base64-to-file@v1.2
with:
fileName: "google-services.json"
encodedString: ${{ secrets.GOOGLE_SERVICE_BASE64 }}

- name: 🏗️ Generate build_runner
run: dart run build_runner build -d
- name: Create google-services.json
run: |
cp "${{ steps.google_services.outputs.filePath }}" android/app/
- name: 🌐 Generate Locale Keys
run: dart run easy_localization:generate -S assets/translations -O lib/src/l10n -o locale_keys.g.dart -f keys
- name: Download firebase_options.dart
id: firebase_options
uses: timheuer/base64-to-file@v1.2
with:
fileName: "firebase_options.dart"
encodedString: ${{ secrets.FIREBASE_OPTION_DART }}

- name: Create firebase_options.dart
run: |
cp "${{ steps.firebase_options.outputs.filePath }}" lib/
- name: 🕵️ Analyze
- name: Create .env
run: |
flutter analyze lib/src
dart run custom_lint
touch .env
echo "ONESIGNAL_APP_ID=${{ secrets.ONESIGNAL_APP_ID }}" >> .env
cat .env
- name: 🔨 Run code generation
run: dart run build_runner build

- name: ✅ Run flutter analyze
run: flutter analyze
4 changes: 4 additions & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@
<meta-data
android:name="flutterEmbedding"
android:value="2" />

<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-7567997114394639~3076287765"/>
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
Expand Down
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip
22 changes: 5 additions & 17 deletions lib/app_start_up.dart
Original file line number Diff line number Diff line change
@@ -1,36 +1,24 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:mmcalendar/firebase_options.dart';
import 'package:mmcalendar/src/shared/providers/mm_calendar_providers.dart';
import 'package:mmcalendar/src/utils/shared_prefs/preference_manager.dart';
import 'package:mmcalendar/src/utils/onesignal/onesignal.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';

part 'app_start_up.g.dart';

@Riverpod(keepAlive: true)
FutureOr<void> appStartup(AppStartupRef ref) async {
FutureOr<void> appStartup(Ref ref) async {
ref.onDispose(() {
// ensure we invalidate all the providers we depend on
// ref.invalidate(onboardingRepositoryProvider);
ref.invalidate(sharedPreferencesProvider);
ref.invalidate(mmCalendarConfigControllerProvider);
});

// await for all initialization code to be complete before returning
// we can use `Future.wait` for independent long run tasks.
await Future.wait([
// Firebase init
Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
),
initOnesignal(),

// list of providers to be warmed up
// ref.watch(onboardingRepositoryProvider.future),
ref.watch(sharedPreferencesProvider.future),
]);
// await Future.wait([
// list of providers to be warmed up
// ref.watch(onboardingRepositoryProvider.future),
// ]);

ref.watch(mmCalendarConfigControllerProvider);
}
Expand Down
23 changes: 23 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,41 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:mmcalendar/app_start_up.dart';
import 'package:mmcalendar/firebase_options.dart';
import 'package:mmcalendar/src/features/app/app.dart';
import 'package:mmcalendar/src/l10n/l10n.dart';
import 'package:mmcalendar/src/shared/errors/async_error_logger.dart';
import 'package:mmcalendar/src/shared/errors/error_logger.dart';
// ignore:depend_on_referenced_packages
import 'package:flutter_web_plugins/url_strategy.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'src/utils/google_ads/ads_helper.dart';
import 'src/utils/remote_config/app_remote_config.dart';

late SharedPreferences sharedPreferences;

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await EasyLocalization.ensureInitialized();

sharedPreferences = await SharedPreferences.getInstance();

// Firebase init
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);

await AppRemoteConfig.initConfig();
await AdsHelper.initAds();

// turn off the # in the URLs on the web
usePathUrlStrategy();

final container = ProviderContainer(
observers: [AsyncErrorLogger()],
);
Expand Down
4 changes: 4 additions & 0 deletions lib/src/features/app/presentation/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:mmcalendar/src/l10n/l10n.dart';
import 'package:mmcalendar/src/routes/routes.dart';
import 'package:mmcalendar/src/utils/google_ads/app_open_ads_widget.dart';
import 'package:mmcalendar/src/widgets/settings/theme_mode_switch_tile.dart';

class AppWidget extends HookConsumerWidget {
Expand Down Expand Up @@ -42,6 +43,9 @@ class AppWidget extends HookConsumerWidget {
localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales,
locale: context.locale,
builder: (context, child) {
return AppOpenAdsWidget(child: child!);
},
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import 'package:auto_route/auto_route.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_mmcalendar/flutter_mmcalendar.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:iconly/iconly.dart';
import 'package:mmcalendar/src/shared/shared.dart';
import 'package:mmcalendar/src/utils/google_ads/ads_helper.dart';

import 'widgets/landscape_date_detail_widget.dart';
import 'widgets/portrait_date_detail_widget.dart';
Expand All @@ -28,11 +30,19 @@ class _MmCalendarDetailPageState extends ConsumerState<MmCalendarDetailPage> {

DateTime _date = DateTime.now();

BannerAd? _bannerAd;
bool _isAdLoaded = false;

// NativeAd? _nativeAd;
// bool _isNativeAdLoaded = false;

@override
void initState() {
_date = widget.date;
_pageController = PageController(initialPage: _currentPageIndex);
super.initState();
loadBannerAd();
// loadNativeAd();
}

@override
Expand All @@ -41,6 +51,30 @@ class _MmCalendarDetailPageState extends ConsumerState<MmCalendarDetailPage> {
super.dispose();
}

void loadBannerAd() {
final ad = AdsHelper.loadBannerAd(
onLoaded: () {
setState(() {
_isAdLoaded = true;
});
},
);
setState(() {
_bannerAd = ad;
});
}

// void loadNativeAd() {
// final ad = AdsHelper.loadNativeAd(onLoaded: () {
// setState(() {
// _isNativeAdLoaded = true;
// });
// });
// setState(() {
// _nativeAd = ad;
// });
// }

void _handlePageChange(int position) {
if (_currentPageIndex > position) {
// substract
Expand Down Expand Up @@ -90,6 +124,8 @@ class _MmCalendarDetailPageState extends ConsumerState<MmCalendarDetailPage> {

@override
Widget build(BuildContext context) {
final orientation = MediaQuery.orientationOf(context);

return Scaffold(
appBar: AppBar(
actions: [
Expand All @@ -99,6 +135,15 @@ class _MmCalendarDetailPageState extends ConsumerState<MmCalendarDetailPage> {
),
],
),
bottomNavigationBar: (_bannerAd != null &&
_isAdLoaded &&
orientation == Orientation.portrait)
? SizedBox(
width: double.infinity,
height: _bannerAd!.size.height.toDouble(),
child: AdWidget(ad: _bannerAd!),
)
: null,
body: PageView.builder(
controller: _pageController,
onPageChanged: _handlePageChange,
Expand Down
Loading

0 comments on commit 3e16bc5

Please sign in to comment.