Skip to content

Commit 3faab0d

Browse files
authored
Merge pull request #39 from acdinc/master
2 parents 48b50fd + 680731c commit 3faab0d

File tree

14 files changed

+195
-417
lines changed

14 files changed

+195
-417
lines changed

Diff for: .gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,6 @@ app.*.map.json
4242

4343
# Exceptions to above rules.
4444
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
45+
46+
# google-services
47+
android/app/google-services.json

Diff for: android/app/build.gradle

+4-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ if (flutterVersionName == null) {
2424
apply plugin: 'com.android.application'
2525
apply plugin: 'kotlin-android'
2626
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27+
apply plugin: 'com.google.gms.google-services'
2728

2829
def keystoreProperties = new Properties()
2930
def keystorePropertiesFile = rootProject.file('key.properties')
@@ -45,7 +46,7 @@ android {
4546
defaultConfig {
4647
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
4748
applicationId "com.hwa.fluttermvvmtemplate"
48-
minSdkVersion 16
49+
minSdkVersion 19
4950
targetSdkVersion 29
5051
versionCode flutterVersionCode.toInteger()
5152
versionName flutterVersionName
@@ -73,4 +74,6 @@ flutter {
7374

7475
dependencies {
7576
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
77+
implementation platform('com.google.firebase:firebase-bom:29.0.3')
78+
implementation 'com.google.firebase:firebase-analytics'
7679
}

Diff for: android/build.gradle

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ buildscript {
66
}
77

88
dependencies {
9-
classpath 'com.android.tools.build:gradle:3.5.0'
9+
classpath 'com.android.tools.build:gradle:4.1.0'
1010
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11+
classpath 'com.google.gms:google-services:4.3.10'
1112
}
1213
}
1314

Diff for: android/gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip

Diff for: lib/core/constants/app/app_constants.dart

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
class ApplicationConstants {
2+
static const COMPANY_NAME = 'HWA';
3+
4+
// production'da olmadığımız sürece çalışmasını istemediğimiz fonksiyonlar için kullanacağız
5+
static const TEST_MODE = true;
6+
27
static const LANG_ASSET_PATH = 'asset/lang';
38
static const IPAD_NAME = 'IPAD';
49
static const FONT_FAMILY = 'POPPINS';
5-
static const COMPANY_NAME = 'HWA';
610

711
static const EMAIL_REGIEX = r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}\$';
812

Diff for: lib/core/init/analytics/analytics_manager.dart

+26-15
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,37 @@
11
import 'package:firebase_analytics/firebase_analytics.dart';
2-
import 'package:firebase_analytics/observer.dart';
2+
import 'package:flutter/material.dart';
3+
import 'package:fluttermvvmtemplate/core/constants/app/app_constants.dart';
34

4-
class AnalytcisManager{
5+
class AnalytcisManager {
56
static final AnalytcisManager _instance = AnalytcisManager._init();
67
static AnalytcisManager get instance => _instance;
7-
AnalytcisManager._init();
8+
AnalytcisManager._init() {
9+
init();
10+
}
11+
12+
static final _analytics = FirebaseAnalytics.instance;
813

9-
static final _analytics = FirebaseAnalytics();
14+
final List<NavigatorObserver> observer =
15+
ApplicationConstants.TEST_MODE ? [] : [FirebaseAnalyticsObserver(analytics: _analytics)];
1016

11-
final observer = FirebaseAnalyticsObserver(analytics: _analytics);
17+
// Firebase e her zaman veri göndermek istemeyebiliriz.
18+
// Örneğin inapppurchase yapacağımızda ApplicationConstants.TEST_MODE false olursa
19+
// gerçekten ödeme yapılmış gibi ücret bilgisi yansır.
20+
// Bu istenmeyen bir durumdur, gerçek verileri manipüle eder..
21+
Future<void> init() async {
22+
await _analytics.setAnalyticsCollectionEnabled(ApplicationConstants.TEST_MODE ? false : true);
23+
}
1224

1325
Future<void> customEvent(String name) async {
1426
//her şey yapılabilir
15-
await observer.analytics.logEvent(name: name);
27+
await _analytics.logEvent(name: name);
1628
}
1729

1830
//USER ANALYTICS
1931
//kayıt sırasında user ıd yi almak için
20-
Future setUserAnalytics(
21-
{ String userID, String name, String value}) async {
22-
await _analytics.setUserId(userID);
23-
32+
Future setUserAnalytics({String? userID, String? name, String? value}) async {
33+
await _analytics.setUserId(id: userID);
34+
2435
//kullanıcılara rol vermek için kullanılabilir (ADMİN-KULLANICI-PREMIUMS VS VS)
2536
//bunu yapacaksak öncelikle
2637
//firebase consola git
@@ -31,15 +42,15 @@ class AnalytcisManager{
3142
//dimension name ya raporda gözükecek olan başlığı yaz
3243
//descriptiona ufak bi açıklamasını yaz
3344
if (name != null && value != null) {
34-
await observer.analytics.setUserProperty(name: name, value: value);
45+
await _analytics.setUserProperty(name: name, value: value);
3546
}
3647
}
3748

3849
Future<void> userLogin(String signUpMethod) async {
39-
await _analytics.logLogin(loginMethod: signUpMethod);
40-
}
50+
await _analytics.logLogin(loginMethod: signUpMethod);
51+
}
4152

4253
Future<void> userSignUp(String signUpMethod) async {
43-
await observer.analytics.logSignUp(signUpMethod: signUpMethod);
54+
await _analytics.logSignUp(signUpMethod: signUpMethod);
4455
}
45-
}
56+
}

Diff for: lib/core/init/navigation/navigation_route.dart

+12-16
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,37 @@ class NavigationRoute {
2020
Route<dynamic> generateRoute(RouteSettings args) {
2121
switch (args.name) {
2222
case NavigationConstants.DEFAULT:
23-
return normalNavigate(SplashView());
23+
return normalNavigate(SplashView(), NavigationConstants.DEFAULT);
2424

2525
case NavigationConstants.TEST_VIEW:
26-
firebase-analytics
27-
return normalNavigate(TestsView(),NavigationConstants.TEST_VIEW);
28-
29-
return normalNavigate(TestsView());
26+
return normalNavigate(TestsView(), NavigationConstants.TEST_VIEW);
3027

3128
case NavigationConstants.BUY_VIEW:
32-
return normalNavigate(BuyView());
29+
return normalNavigate(BuyView(), NavigationConstants.BUY_VIEW);
3330

3431
case NavigationConstants.ON_BOARD:
35-
return normalNavigate(OnBoardView());
32+
return normalNavigate(OnBoardView(), NavigationConstants.ON_BOARD);
3633

3734
case NavigationConstants.SETTINGS_WEB_VIEW:
3835
if (args.arguments is SettingsDynamicModel) {
39-
return normalNavigate(SettingsDynamicView(
40-
model: args.arguments as SettingsDynamicModel,
41-
));
36+
return normalNavigate(
37+
SettingsDynamicView(model: args.arguments as SettingsDynamicModel),
38+
NavigationConstants.SETTINGS_WEB_VIEW,
39+
);
4240
}
4341
throw NavigateException<SettingsDynamicModel>(args.arguments);
4442

45-
master
4643
default:
4744
return MaterialPageRoute(
4845
builder: (context) => NotFoundNavigationWidget(),
4946
);
5047
}
5148
}
5249

53-
MaterialPageRoute normalNavigate(Widget widget,String pageName) {
50+
MaterialPageRoute normalNavigate(Widget widget, String pageName) {
5451
return MaterialPageRoute(
55-
builder: (context) => widget,
56-
//analytciste görülecek olan sayfa ismi için pageName veriyoruz
57-
settings: RouteSettings(name: pageName)
58-
);
52+
builder: (context) => widget,
53+
//analytciste görülecek olan sayfa ismi için pageName veriyoruz
54+
settings: RouteSettings(name: pageName));
5955
}
6056
}

Diff for: lib/main.dart

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
import 'package:easy_localization/easy_localization.dart';
2+
import 'package:firebase_core/firebase_core.dart';
23
import 'package:flutter/material.dart';
3-
firebase-analytics
4-
import 'package:fluttermvvmtemplate/core/init/analytics/analytics_manager.dart';
5-
6-
import 'package:kartal/kartal.dart';
7-
master
84
import 'package:provider/provider.dart';
95

106
import 'core/constants/app/app_constants.dart';
11-
import 'core/init/cache/locale_manager.dart';
7+
import 'core/init/analytics/analytics_manager.dart';
128
import 'core/init/lang/language_manager.dart';
139
import 'core/init/navigation/navigation_route.dart';
1410
import 'core/init/navigation/navigation_service.dart';
1511
import 'core/init/notifier/provider_list.dart';
1612
import 'core/init/notifier/theme_notifer.dart';
17-
import 'view/home/burger/view/burgers_view.dart';
1813

1914
Future<void> main() async {
2015
await _init();
@@ -32,6 +27,7 @@ Future<void> main() async {
3227
Future<void> _init() async {
3328
WidgetsFlutterBinding.ensureInitialized();
3429
await EasyLocalization.ensureInitialized();
30+
await Firebase.initializeApp();
3531
}
3632

3733
class MyApp extends StatelessWidget {
@@ -45,7 +41,7 @@ class MyApp extends StatelessWidget {
4541
locale: context.locale,
4642
onGenerateRoute: NavigationRoute.instance.generateRoute,
4743
navigatorKey: NavigationService.instance.navigatorKey,
48-
navigatorObservers: [AnalytcisManager.instance.observer],
44+
navigatorObservers: AnalytcisManager.instance.observer,
4945
);
5046
}
5147
}

Diff for: lib/view/authenticate/splash/viewmodel/device_and_cahe.dart

+1-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@ import '../../../../core/init/cache/locale_manager.dart';
44

55
mixin DeviceAndCache {
66
Future<void> deviceandCacheInit() async {
7-
if (DeviceUtility.instance == null) {
8-
return;
9-
}
107
await Future.wait([
118
LocaleManager.prefrencesInit(),
12-
DeviceUtility.instance!.initPackageInfo()
9+
DeviceUtility.instance.initPackageInfo(),
1310
]);
1411
}
1512
}

Diff for: module/all_of_template/pubspec.lock

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ packages:
77
name: async
88
url: "https://pub.dartlang.org"
99
source: hosted
10-
version: "2.6.1"
10+
version: "2.8.2"
1111
boolean_selector:
1212
dependency: transitive
1313
description:
@@ -21,14 +21,14 @@ packages:
2121
name: characters
2222
url: "https://pub.dartlang.org"
2323
source: hosted
24-
version: "1.1.0"
24+
version: "1.2.0"
2525
charcode:
2626
dependency: transitive
2727
description:
2828
name: charcode
2929
url: "https://pub.dartlang.org"
3030
source: hosted
31-
version: "1.2.0"
31+
version: "1.3.1"
3232
clock:
3333
dependency: transitive
3434
description:
@@ -106,14 +106,14 @@ packages:
106106
name: matcher
107107
url: "https://pub.dartlang.org"
108108
source: hosted
109-
version: "0.12.10"
109+
version: "0.12.11"
110110
meta:
111111
dependency: transitive
112112
description:
113113
name: meta
114114
url: "https://pub.dartlang.org"
115115
source: hosted
116-
version: "1.3.0"
116+
version: "1.7.0"
117117
mime:
118118
dependency: transitive
119119
description:
@@ -202,7 +202,7 @@ packages:
202202
name: test_api
203203
url: "https://pub.dartlang.org"
204204
source: hosted
205-
version: "0.3.0"
205+
version: "0.4.3"
206206
typed_data:
207207
dependency: transitive
208208
description:
@@ -258,7 +258,7 @@ packages:
258258
name: vector_math
259259
url: "https://pub.dartlang.org"
260260
source: hosted
261-
version: "2.1.0"
261+
version: "2.1.1"
262262
sdks:
263-
dart: ">=2.12.0 <3.0.0"
263+
dart: ">=2.14.0 <3.0.0"
264264
flutter: ">=2.0.0"

0 commit comments

Comments
 (0)