Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: migrate flutter gradle plugin apply #1

Merged
merged 10 commits into from
Nov 3, 2024
Merged
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