diff --git a/lib/assets/images/reddit.png b/lib/assets/images/reddit.png
new file mode 100644
index 00000000..941a12e6
Binary files /dev/null and b/lib/assets/images/reddit.png differ
diff --git a/lib/assets/images/revanced.svg b/lib/assets/images/revanced.svg
new file mode 100644
index 00000000..7318abbd
--- /dev/null
+++ b/lib/assets/images/revanced.svg
@@ -0,0 +1,6 @@
+
diff --git a/lib/assets/images/revanced_afn.png b/lib/assets/images/revanced_afn.png
new file mode 100644
index 00000000..5d2767f5
Binary files /dev/null and b/lib/assets/images/revanced_afn.png differ
diff --git a/lib/backend/api/github_api.dart b/lib/backend/api/github_api.dart
new file mode 100644
index 00000000..5823e191
--- /dev/null
+++ b/lib/backend/api/github_api.dart
@@ -0,0 +1,17 @@
+import 'package:github/github.dart';
+
+class GithubAPI {
+ var github = GitHub();
+
+ Future latestRelease(String org, repoName) async {
+ var latestRelease = await github.repositories
+ .getLatestRelease(RepositorySlug(org, repoName));
+ var dlurl = latestRelease.assets?.first.browserDownloadUrl;
+ print(dlurl);
+ return latestRelease;
+ }
+}
+
+void main(List args) {
+ GithubAPI().latestRelease('revanced', 'revanced-patches');
+}
diff --git a/lib/backend/api/manager_api.dart b/lib/backend/api/manager_api.dart
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/lib/backend/api/manager_api.dart
@@ -0,0 +1 @@
+
diff --git a/lib/main.dart b/lib/main.dart
index d92f3e3a..a4379dad 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
import 'package:revanced_manager_flutter/ui/screens/home_screen.dart';
import 'package:revanced_manager_flutter/ui/screens/patcher_screen.dart';
import 'constants.dart';
@@ -17,6 +18,9 @@ class MyApp extends StatelessWidget {
title: 'ReVanced Manager',
theme: ThemeData.light().copyWith(
backgroundColor: Colors.red,
+ textTheme: GoogleFonts.interTextTheme(
+ Theme.of(context).textTheme,
+ ),
useMaterial3: true,
colorScheme: const ColorScheme.light(
primary: purple40,
diff --git a/lib/models/release.dart b/lib/models/release.dart
new file mode 100644
index 00000000..6b94de84
--- /dev/null
+++ b/lib/models/release.dart
@@ -0,0 +1,9 @@
+import 'package:revanced_manager_flutter/models/release_asset.dart';
+
+class Release {
+ String? tagName;
+ String? publishedAt;
+ bool? isPrerelease;
+ List? assets;
+ String? body;
+}
diff --git a/lib/models/release_asset.dart b/lib/models/release_asset.dart
new file mode 100644
index 00000000..3e65b7a8
--- /dev/null
+++ b/lib/models/release_asset.dart
@@ -0,0 +1,4 @@
+class ReleaseAsset {
+ String? downloadUrl;
+ String? name;
+}
diff --git a/lib/ui/screens/home_screen.dart b/lib/ui/screens/home_screen.dart
index 61897628..735c257b 100644
--- a/lib/ui/screens/home_screen.dart
+++ b/lib/ui/screens/home_screen.dart
@@ -1,5 +1,8 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
+import 'package:revanced_manager_flutter/ui/widgets/available_update.dart';
+import 'package:revanced_manager_flutter/ui/widgets/installed_apps.dart';
+import 'package:revanced_manager_flutter/ui/widgets/latest_commit.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
@@ -8,52 +11,61 @@ class HomeScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
- child: Padding(
- padding: const EdgeInsets.symmetric(
- vertical: 0.0,
- horizontal: 24.0,
- ),
- child: Column(
- children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Text(
- "ReVanced Manager",
- style: GoogleFonts.manrope(
- fontSize: 24,
- fontWeight: FontWeight.w500,
- ),
- ),
- IconButton(
+ child: SingleChildScrollView(
+ child: Padding(
+ padding: const EdgeInsets.symmetric(
+ vertical: 0.0,
+ horizontal: 20.0,
+ ),
+ child: Column(
+ children: [
+ Align(
+ alignment: Alignment.topRight,
+ child: IconButton(
onPressed: () {},
icon: const Icon(
Icons.more_vert,
),
- )
- ],
- ),
- const SizedBox(height: 12),
- Align(
- alignment: Alignment.topLeft,
- child: Text(
- "Dashboard",
- style: GoogleFonts.lato(
- fontSize: 32,
),
),
- ),
- const SizedBox(height: 12),
- Align(
- alignment: Alignment.topLeft,
- child: Text(
- "ReVanced Updates",
- style: GoogleFonts.lato(
- fontSize: 22,
+ const SizedBox(height: 60),
+ Align(
+ alignment: Alignment.topLeft,
+ child: Text(
+ "Dashboard",
+ style: GoogleFonts.inter(
+ fontSize: 28,
+ ),
),
),
- ),
- ],
+ const SizedBox(height: 23),
+ Align(
+ alignment: Alignment.topLeft,
+ child: Text(
+ "ReVanced Updates",
+ style: GoogleFonts.inter(
+ fontSize: 18,
+ ),
+ ),
+ ),
+ const SizedBox(height: 10),
+ const LatestCommitWidget(),
+ const SizedBox(height: 14),
+ Align(
+ alignment: Alignment.topLeft,
+ child: Text(
+ "Patched Applications",
+ style: GoogleFonts.inter(
+ fontSize: 18,
+ ),
+ ),
+ ),
+ const SizedBox(height: 14),
+ const AvailableUpdatesWidget(),
+ const SizedBox(height: 15),
+ const InstalledAppsWidget(),
+ ],
+ ),
),
),
),
diff --git a/lib/ui/widgets/available_update.dart b/lib/ui/widgets/available_update.dart
new file mode 100644
index 00000000..4015bfcf
--- /dev/null
+++ b/lib/ui/widgets/available_update.dart
@@ -0,0 +1,140 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+import 'package:google_fonts/google_fonts.dart';
+
+class AvailableUpdatesWidget extends StatelessWidget {
+ const AvailableUpdatesWidget({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: const Color(0xff1B222B),
+ ),
+ padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Text(
+ "Updates Available(2)",
+ style: GoogleFonts.inter(
+ fontSize: 16,
+ color: const Color(0xff7792BA),
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ TextButton(
+ onPressed: () {},
+ style: TextButton.styleFrom(
+ primary: Colors.white,
+ backgroundColor: const Color(0xff7792BA),
+ padding: const EdgeInsets.symmetric(
+ vertical: 8,
+ horizontal: 18,
+ ),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(24),
+ ),
+ ),
+ child: const Text("Patch all"),
+ )
+ ],
+ ),
+ ListTile(
+ horizontalTitleGap: 12.0,
+ leading: SvgPicture.asset(
+ "lib/assets/images/revanced.svg",
+ height: 26,
+ width: 26,
+ ),
+ title: Text(
+ "ReVanced",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff7792BA),
+ ),
+ ),
+ subtitle: const Text("Released 2 days ago"),
+ trailing: TextButton(
+ onPressed: () {},
+ style: TextButton.styleFrom(
+ side: const BorderSide(
+ color: Color(0xff7792BA),
+ width: 1,
+ ),
+ primary: Colors.white,
+ padding: const EdgeInsets.symmetric(
+ vertical: 10,
+ horizontal: 24,
+ ),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(24),
+ ),
+ ),
+ child: const Text("Patch"),
+ ),
+ ),
+ ListTile(
+ horizontalTitleGap: 12.0,
+ leading: const Image(
+ image: AssetImage("lib/assets/images/reddit.png"),
+ height: 39,
+ width: 39,
+ ),
+ title: Text(
+ "ReReddit",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff7792BA),
+ ),
+ ),
+ subtitle: const Text("Released 1 month ago"),
+ trailing: TextButton(
+ onPressed: () {},
+ style: TextButton.styleFrom(
+ side: const BorderSide(
+ color: Color(0xff7792BA),
+ width: 1,
+ ),
+ primary: Colors.white,
+ padding: const EdgeInsets.symmetric(
+ vertical: 10,
+ horizontal: 24,
+ ),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(24),
+ ),
+ ),
+ child: const Text("Patch"),
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ "Changelog",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ fontWeight: FontWeight.w700,
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ "fix: we made the player even worse (you love)",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ "chore: guhhughghu",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/ui/widgets/installed_apps.dart b/lib/ui/widgets/installed_apps.dart
new file mode 100644
index 00000000..7ecefd59
--- /dev/null
+++ b/lib/ui/widgets/installed_apps.dart
@@ -0,0 +1,85 @@
+import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
+
+class InstalledAppsWidget extends StatelessWidget {
+ const InstalledAppsWidget({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: const Color(0xff1B222B),
+ ),
+ padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Text(
+ "Total Installed(3)",
+ style: GoogleFonts.inter(
+ fontSize: 16,
+ color: const Color(0xff7792BA),
+ fontWeight: FontWeight.w500,
+ ),
+ ),
+ ListTile(
+ horizontalTitleGap: 12.0,
+ leading: const Image(
+ image: AssetImage("lib/assets/images/reddit.png"),
+ height: 39,
+ width: 39,
+ ),
+ title: Text(
+ "ReVanced",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff7792BA),
+ ),
+ ),
+ subtitle: const Text("Released 2 days ago"),
+ trailing: TextButton(
+ onPressed: () {},
+ style: TextButton.styleFrom(
+ side: const BorderSide(
+ color: Color(0xff7792BA),
+ width: 1,
+ ),
+ primary: Colors.white,
+ padding: const EdgeInsets.symmetric(
+ vertical: 10,
+ horizontal: 24,
+ ),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(24),
+ ),
+ ),
+ child: const Text("Patch"),
+ ),
+ ),
+ Text(
+ "Changelog",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ fontWeight: FontWeight.w700,
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ "fix: we made the player even worse (you love)",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ "chore: guhhughghu",
+ style: GoogleFonts.roboto(
+ color: const Color(0xff8691A0),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/ui/widgets/latest_commit.dart b/lib/ui/widgets/latest_commit.dart
new file mode 100644
index 00000000..f28a536b
--- /dev/null
+++ b/lib/ui/widgets/latest_commit.dart
@@ -0,0 +1,43 @@
+import 'package:flutter/material.dart';
+
+class LatestCommitWidget extends StatelessWidget {
+ const LatestCommitWidget({Key? key}) : super(key: key);
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(12),
+ color: const Color(0xff1B222B),
+ ),
+ padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: const [
+ Text("Patcher: 20 hours ago"),
+ Text("Manager: 3 days ago"),
+ ],
+ ),
+ TextButton(
+ onPressed: () {},
+ style: TextButton.styleFrom(
+ primary: Colors.white,
+ backgroundColor: const Color(0xff7792BA),
+ padding: const EdgeInsets.symmetric(
+ vertical: 10,
+ horizontal: 24,
+ ),
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(24),
+ ),
+ ),
+ child: const Text("Update Manager"),
+ )
+ ],
+ ),
+ );
+ }
+}
diff --git a/pubspec.lock b/pubspec.lock
index 0cb735e1..133a2d47 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -102,6 +102,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ github:
+ dependency: "direct main"
+ description:
+ name: github
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "9.4.0"
google_fonts:
dependency: "direct main"
description:
@@ -110,7 +117,7 @@ packages:
source: hosted
version: "3.0.1"
http:
- dependency: transitive
+ dependency: "direct main"
description:
name: http
url: "https://pub.dartlang.org"
@@ -123,6 +130,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
+ json_annotation:
+ dependency: transitive
+ description:
+ name: json_annotation
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "4.6.0"
lints:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 8b61cf6f..6dba6bec 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -36,6 +36,8 @@ dependencies:
cupertino_icons: ^1.0.2
flutter_svg: ^1.1.1+1
google_fonts: ^3.0.1
+ http: ^0.13.4
+ github: ^9.4.0
dev_dependencies:
flutter_test: