Skip to content

Commit

Permalink
♻️ Migrate to latest gtk-flutter package
Browse files Browse the repository at this point in the history
🔖 Bump version to 3.0.0
⚰️ Remove dead code
  • Loading branch information
prateekmedia committed Sep 28, 2021
1 parent 9ecf588 commit b643b2d
Show file tree
Hide file tree
Showing 16 changed files with 93 additions and 126 deletions.
7 changes: 0 additions & 7 deletions .github/workflows/flutterci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,6 @@ jobs:
with:
channel: beta

- uses: haya14busa/action-cond@v1
id: newref
with:
cond: ${{github.event_name == 'release'}}
if_true: ${{github.ref}}
if_false: ${{github.ref}}-nightly

- name: Install linux app dependencies
run: sudo apt-get update -y && sudo apt-get install -y ninja-build libgtk-3-dev

Expand Down
37 changes: 23 additions & 14 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,10 @@ class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
final gTheme = GnomeTheme();
return Consumer(builder: (ctx, ref, _) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: (ref.watch(forceDarkThemeProvider)
? ThemeData(
brightness: Brightness.dark,
canvasColor: getGtkColor(isDark: true, colorType: GtkColorType.canvas),
)
: gTheme.data(context))
.copyWith(primaryColor: Colors.blue[600]),
theme: ref.watch(gnomeThemeProvider.notifier).theme.themeData.copyWith(primaryColor: Colors.blue[600]),
home: const HomePage(),
);
});
Expand Down Expand Up @@ -155,7 +148,7 @@ class _HomePageState extends State<HomePage> {
return Consumer(
builder: (ctx, ref, _) => Scaffold(
drawer: context.width < mobileWidth
? Drawer(child: buildSidebar(context, isSidebarActive, navrailIndex, true))
? Drawer(child: buildSidebar(context, ref, isSidebarActive, navrailIndex, true))
: null,
body: RawKeyboardListener(
focusNode: FocusNode(),
Expand All @@ -168,7 +161,11 @@ class _HomePageState extends State<HomePage> {
center: toggleSearch.value
? Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5),
color: getAdaptiveGtkColor(context, colorType: GtkColorType.headerBarBackgroundBottom),
color: getAdaptiveGtkColor(
context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerBarBackgroundBottom,
),
constraints: BoxConstraints.loose(const Size(500, 50)),
child: RawKeyboardListener(
child: TextField(
Expand Down Expand Up @@ -198,6 +195,7 @@ class _HomePageState extends State<HomePage> {
: null,
leading: [
GtkHeaderButton(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
icon: AdwaitaIcon(
!toggleSearch.value ? AdwaitaIcons.system_search : AdwaitaIcons.go_previous,
size: 17,
Expand All @@ -208,6 +206,7 @@ class _HomePageState extends State<HomePage> {
trailing: !toggleSearch.value
? [
GtkPopupMenu(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
body: Column(
mainAxisSize: MainAxisSize.min,
children: [
Expand Down Expand Up @@ -268,7 +267,7 @@ class _HomePageState extends State<HomePage> {
if (context.width >= mobileWidth)
AnimatedSize(
duration: const Duration(milliseconds: 200),
child: buildSidebar(context, isSidebarActive, navrailIndex),
child: buildSidebar(context, ref, isSidebarActive, navrailIndex),
),
Expanded(
child: Column(
Expand All @@ -280,6 +279,7 @@ class _HomePageState extends State<HomePage> {
children: [
Builder(builder: (context) {
return GtkHeaderButton(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
isActive: isSidebarActive.value,
icon: const AdwaitaIcon(AdwaitaIcons.sidebar_toggle_left),
onPressed: () {
Expand All @@ -293,6 +293,7 @@ class _HomePageState extends State<HomePage> {
}),
buildDropdown(
context,
ref,
label: "View type",
index: ref.watch(viewTypeProvider),
onChanged: (value) => ref.read(viewTypeProvider.notifier).update(),
Expand Down Expand Up @@ -336,9 +337,11 @@ class _HomePageState extends State<HomePage> {
);
}

GtkSidebar buildSidebar(BuildContext context, ValueNotifier<bool> isSidebarActive, ValueNotifier<int> navrailIndex,
GtkSidebar buildSidebar(
BuildContext context, WidgetRef ref, ValueNotifier<bool> isSidebarActive, ValueNotifier<int> navrailIndex,
[bool isSidebar = false]) {
return GtkSidebar(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
width: isSidebarActive.value ? 265 : 0,
padding: EdgeInsets.zero,
currentIndex: navrailIndex.value,
Expand All @@ -350,11 +353,13 @@ class _HomePageState extends State<HomePage> {
},
children: [
GtkSidebarItem(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
label: "Explore",
leading: const AdwaitaIcon(AdwaitaIcons.explore2, size: 17),
),
for (var category in (categories ?? {}).entries.toList().asMap().entries)
GtkSidebarItem(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
label: category.value.key,
leading: AdwaitaIcon(
categoryIcons.containsKey(category.value.key)
Expand All @@ -368,7 +373,8 @@ class _HomePageState extends State<HomePage> {
}

Row buildDropdown(
BuildContext context, {
BuildContext context,
WidgetRef ref, {
required String label,
required int index,
required Function(int? value)? onChanged,
Expand All @@ -383,7 +389,9 @@ class _HomePageState extends State<HomePage> {
height: 35,
padding: const EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: getAdaptiveGtkColor(context, colorType: GtkColorType.headerBarBackgroundTop),
color: getAdaptiveGtkColor(context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerBarBackgroundTop),
borderRadius: BorderRadius.circular(10)),
child: DropdownButton<int>(
value: index,
Expand All @@ -402,6 +410,7 @@ class _HomePageState extends State<HomePage> {
var currentlyDownloading =
ref.watch(downloadListProvider).where((element) => element.actualBytes != element.totalBytes).length;
return GtkViewSwitcher(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
currentIndex: _currentViewIndex.value,
onViewChanged: (index) {
_controller.jumpToPage(index);
Expand Down
4 changes: 4 additions & 0 deletions lib/providers/gnome_theme_provider.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import 'package:gtk/gtk.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

final gnomeThemeProvider = ChangeNotifierProvider((_) => GnomeThemeProvider());
1 change: 1 addition & 0 deletions lib/providers/providers.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export 'force_dark_theme.dart';
export 'download_provider.dart';
export 'gnome_theme_provider.dart';
export 'theme_type.dart';
export 'view_type.dart';
2 changes: 2 additions & 0 deletions lib/screens/app.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:appimagepool/providers/providers.dart';
import 'package:dio/dio.dart';
import 'package:gtk/gtk.dart';
import 'package:flutter/material.dart';
Expand Down Expand Up @@ -63,6 +64,7 @@ class AppPage extends HookConsumerWidget {
Container(
color: getAdaptiveGtkColor(
context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerBarBackgroundTop,
),
child: Center(
Expand Down
13 changes: 9 additions & 4 deletions lib/screens/custom_license_page.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import 'package:appimagepool/providers/providers.dart';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:gtk/gtk.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:sticky_headers/sticky_headers.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:appimagepool/utils/utils.dart';
Expand All @@ -15,10 +17,10 @@ class Package {
Package({required this.name, required this.count});
}

class CustomLicensePage extends HookWidget {
class CustomLicensePage extends HookConsumerWidget {
const CustomLicensePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
Widget build(context, ref) {
final _selected = useState<int?>(null);
final appBarName = useState<String?>(null);

Expand Down Expand Up @@ -61,12 +63,14 @@ class CustomLicensePage extends HookWidget {
panelWidth: 265,
pane2Name: _selected.value != null ? packages[_selected.value!].name : null,
pane1: GtkSidebar.builder(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
controller: ScrollController(),
width: double.infinity,
onSelected: (index) => _selectValue(index, packages[index].name),
currentIndex: _selected.value,
itemBuilder: (context, index, isSelected) {
return GtkSidebarItem(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
labelWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start,
Expand Down Expand Up @@ -106,13 +110,13 @@ class CustomLicensePage extends HookWidget {
}
}

class LicenseInfoPage extends StatelessWidget {
class LicenseInfoPage extends ConsumerWidget {
final Package? package;
final List<LicenseEntry>? paragraph;

const LicenseInfoPage({Key? key, this.package, this.paragraph}) : super(key: key);
@override
Widget build(BuildContext context) {
Widget build(context, ref) {
final arguments = ModalRoute.of(context)?.settings.arguments as Map?;
final cParagraph = paragraph ?? (arguments != null ? arguments['paragraph'] : null);
return Scaffold(
Expand All @@ -125,6 +129,7 @@ class LicenseInfoPage extends StatelessWidget {
header: Container(
color: getAdaptiveGtkColor(
context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerBarBackgroundBottom,
),
padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 15),
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/about_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Widget aboutDialog(BuildContext context) {
image: DecorationImage(
fit: BoxFit.contain,
image: CachedNetworkImageProvider(
'https://raw.githubusercontent.com/prateekmedia/appimagepool/main/assets/appimagepool.png',
'https://raw.githubusercontent.com/prateekmedia/appimagepool/dev/assets/appimagepool.png',
),
),
),
Expand Down
7 changes: 5 additions & 2 deletions lib/widgets/carousel_arrow.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import 'package:adwaita_icons/adwaita_icons.dart';
import 'package:appimagepool/providers/providers.dart';
import 'package:appimagepool/utils/extensions.dart';
import 'package:flutter/material.dart';
import 'package:gtk/gtk.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

class CarouselArrow extends StatelessWidget {
class CarouselArrow extends ConsumerWidget {
const CarouselArrow({
Key? key,
required this.icon,
Expand All @@ -14,14 +16,15 @@ class CarouselArrow extends StatelessWidget {
final String icon;

@override
Widget build(BuildContext context) {
Widget build(context, ref) {
return SizedBox(
width: 44,
height: 44,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: getAdaptiveGtkColor(
context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerButtonBackgroundBottom,
).withOpacity(0.70),
shape: const CircleBorder(),
Expand Down
1 change: 1 addition & 0 deletions lib/widgets/download_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class DownloadButton extends HookConsumerWidget {
child: Material(
type: MaterialType.transparency,
child: GtkPopupMenu(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
popupWidth: 400,
icon: AdwaitaIcon(
downloading > 0 ? AdwaitaIcons.folder_download : AdwaitaIcons.emblem_default,
Expand Down
10 changes: 9 additions & 1 deletion lib/widgets/pool_app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';

import 'package:appimagepool/utils/utils.dart';
import 'package:appimagepool/providers/providers.dart';
import 'package:window_decorations/window_decorations.dart';

class PoolApp extends HookConsumerWidget {
final String? title;
Expand Down Expand Up @@ -33,7 +34,13 @@ class PoolApp extends HookConsumerWidget {
children: [
GtkHeaderBar.bitsdojo(
titlebarSpace: 0,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
appWindow: appWindow,
rawDecoratedWindowButton: (name, type, onPressed) => RawDecoratedWindowButton(
name: name,
type: type ?? ThemeType.auto,
onPressed: onPressed,
),
showMinimize: context.width >= mobileWidth,
showMaximize: context.width >= mobileWidth,
leading: Row(mainAxisSize: MainAxisSize.min, children: [
Expand All @@ -43,6 +50,7 @@ class PoolApp extends HookConsumerWidget {
child: Material(
type: MaterialType.transparency,
child: GtkHeaderButton(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
icon: const AdwaitaIcon(AdwaitaIcons.go_previous),
onPressed: () {
if (onBackPressed != null) onBackPressed!();
Expand All @@ -59,7 +67,7 @@ class PoolApp extends HookConsumerWidget {
style: context.textTheme.headline6!.copyWith(fontSize: 17),
)
: center ?? const SizedBox(),
trailling: Row(mainAxisSize: MainAxisSize.min, children: trailing),
trailing: Row(mainAxisSize: MainAxisSize.min, children: trailing),
themeType: ref.watch(themeTypeProvider),
),
Expanded(child: body),
Expand Down
1 change: 1 addition & 0 deletions lib/widgets/prefs_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ class PrefsWidget extends HookConsumerWidget {
style: ElevatedButton.styleFrom(
primary: getAdaptiveGtkColor(
context,
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
colorType: GtkColorType.headerBarBackgroundTop,
),
),
Expand Down
7 changes: 7 additions & 0 deletions lib/widgets/rounded_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:appimagepool/providers/providers.dart';

import 'package:appimagepool/utils/utils.dart';
import 'package:window_decorations/window_decorations.dart';

class RoundedDialog extends HookConsumerWidget {
final List<Widget> children;
Expand All @@ -30,6 +31,12 @@ class RoundedDialog extends HookConsumerWidget {
child: Column(
children: [
GtkHeaderBar(
gnomeTheme: ref.watch(gnomeThemeProvider.notifier).theme,
rawDecoratedWindowButton: (name, type, onPressed) => RawDecoratedWindowButton(
name: name,
type: type ?? ThemeType.auto,
onPressed: onPressed,
),
onHeaderDrag: appWindow.startDragging,
onDoubleTap: null,
themeType: ref.watch(themeTypeProvider),
Expand Down
Loading

0 comments on commit b643b2d

Please sign in to comment.