Skip to content

Commit

Permalink
Merge pull request #1 from ElNgatia/refactor
Browse files Browse the repository at this point in the history
refactor: migrate flutter gradle plugin apply
  • Loading branch information
ElNgatia authored Nov 3, 2024
2 parents 2fb4a8d + a52b8bf commit c56ca1f
Show file tree
Hide file tree
Showing 21 changed files with 1,282 additions and 350 deletions.
3 changes: 3 additions & 0 deletions .fvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"flutter": "3.24.3"
}
15 changes: 4 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,7 @@ migrate_working_dir/
.packages
.pub-cache/
.pub/
!/
/*
!/build/
/build/*
!/build/app/
/build/app/*
!/build/app/outputs/
/build/app/outputs/*
!/build/app/outputs/flutter-apk/
/build/app/outputs/flutter-apk/*
!/build/app/outputs/flutter-apk/app-release.apk
build/
# to keep release apk

# Symbolication related
Expand All @@ -53,3 +43,6 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release

# FVM Version Cache
.fvm/
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"dart.flutterSdkPath": ".fvm/versions/3.24.3"
}
21 changes: 8 additions & 13 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
Expand All @@ -6,10 +12,6 @@ if (localPropertiesFile.exists()) {
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new Exception("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
Expand All @@ -26,13 +28,10 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
namespace "com.adventurequest.adventure_quest"
compileSdkVersion 33
compileSdkVersion 34
ndkVersion flutter.ndkVersion

compileOptions {
Expand All @@ -54,7 +53,7 @@ android {
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
targetSdkVersion 31
targetSdkVersion 34
versionCode 11
versionName "1.1.0"
}
Expand All @@ -78,7 +77,3 @@ android {
flutter {
source '../..'
}

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
13 changes: 0 additions & 13 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,3 @@
buildscript {
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

allprojects {
repositories {
google()
Expand Down
30 changes: 22 additions & 8 deletions android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()

def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.4.2" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
}

include ":app"
27 changes: 27 additions & 0 deletions lib/activity/data/datasource/activity_local_datasource.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'package:adventure_quest/database/app_database.dart';

abstract class ActivityLocalDataSource {
// get activities, add activity, delete activity,
Future<void> addActivity(activityCompanion);
void deleteActivity(int id);
Future<List<ActivityData>> getActivity();
}

class ActivityLocalDataSourceImpl implements ActivityLocalDataSource {
@override
Future<void> addActivity(activityCompanion) {
return appDatabase.into(appDatabase.activity).insert(activityCompanion);
}

@override
Future<int> deleteActivity(int id) {
return (appDatabase.delete(appDatabase.activity)..where((tbl) => tbl.id.equals(id))).go();
}

@override
Future<List<ActivityData>> getActivity() {
return appDatabase.select(appDatabase.activity).get();
}
}

ActivityLocalDataSource activityLocalDataSource = ActivityLocalDataSourceImpl();
23 changes: 23 additions & 0 deletions lib/activity/data/datasource/activity_remote_datasource.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'dart:convert';

import 'package:adventure_quest/database/app_database.dart';
import 'package:http/http.dart' as http;

abstract class ActivityRemoteDataSource {
Future<ActivityData> fetchActivity();
}

class ActivityRemoteDataSourceImpl implements ActivityRemoteDataSource {
@override
Future<ActivityData> fetchActivity() async {
try {
final response = await http.get(Uri.parse('https://bored.api.lewagon.com/api/activity/'));

return ActivityData.fromJson(json.decode(response.body));
} catch (e) {
rethrow;
}
}
}

ActivityRemoteDataSource activityRemoteDataSource = ActivityRemoteDataSourceImpl();
10 changes: 10 additions & 0 deletions lib/activity/data/model/activity.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import 'package:drift/drift.dart';

class Activity extends Table {
IntColumn get id => integer().autoIncrement().nullable()();
TextColumn get activity => text()();
TextColumn get type => text()();
IntColumn get participants => integer()();
TextColumn get link => text()();
TextColumn get key => text().unique()();
}
35 changes: 35 additions & 0 deletions lib/activity/repository/activity_repository.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import 'package:adventure_quest/activity/data/datasource/activity_local_datasource.dart';
import 'package:adventure_quest/activity/data/datasource/activity_remote_datasource.dart';
import 'package:adventure_quest/database/app_database.dart';

abstract class ActivityRepository {
// fetch, get, delete, save, basic crud with api calls too
Future<ActivityData> fetchActivity();
Future<List<ActivityData>> getActivity();
Future<void> saveActivity(activity);
void deleteActivity(int id);
}

class ActivityRepositoryImpl implements ActivityRepository {
@override
void deleteActivity(int id) {
return activityLocalDataSource.deleteActivity(id);
}

@override
Future<ActivityData> fetchActivity() async {
return activityRemoteDataSource.fetchActivity();
}

@override
Future<List<ActivityData>> getActivity() {
return activityLocalDataSource.getActivity();
}

@override
Future<void> saveActivity(activityCompanion) async {
return await activityLocalDataSource.addActivity(activityCompanion);
}
}

ActivityRepository activityRepository = ActivityRepositoryImpl();
24 changes: 24 additions & 0 deletions lib/app/app.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'package:flutter/material.dart';

import '../presentation/common_scaffold.dart';
import 'config/color_schemes.g.dart';

class App extends StatelessWidget {
const App({super.key});

// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Adventure Quest',
theme: ThemeData(
useMaterial3: true,
colorScheme: lightColorScheme),
darkTheme: ThemeData(
useMaterial3: true,
colorScheme: darkColorScheme),
home: const CommonScaffold(),
);
}
}
File renamed without changes.
30 changes: 30 additions & 0 deletions lib/database/app_database.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:drift/drift.dart';

import 'package:adventure_quest/activity/data/model/activity.dart';
import 'package:drift_flutter/drift_flutter.dart';

part 'app_database.g.dart';

@DriftDatabase(tables: [Activity])
class AppDatabase extends _$AppDatabase {
AppDatabase() : super(_openDatabase());

@override
int get schemaVersion => 1;

@override
MigrationStrategy get migration {
return MigrationStrategy(
onCreate: (m) async {
await m.createAll();
},
onUpgrade: (m, from, to) async {},
);
}

static QueryExecutor _openDatabase() {
return driftDatabase(name: 'adventure_quest');
}
}

AppDatabase appDatabase = AppDatabase();
Loading

0 comments on commit c56ca1f

Please sign in to comment.