add buildlogprovider to handle scrolling from outside widget

This commit is contained in:
2024-02-16 22:37:35 +01:00
committed by Lukas-Heiligenbrunner
parent 7ea241112c
commit 598159a2bc
19 changed files with 142 additions and 96 deletions

View File

@ -0,0 +1,13 @@
import 'package:flutter/material.dart';
abstract class BaseProvider<T, DTO> with ChangeNotifier {
late Future<T> data;
DTO? dto;
loadFuture(context, {DTO? dto});
refresh(context) {
loadFuture(context, dto: this.dto);
notifyListeners();
}
}

View File

@ -0,0 +1,19 @@
import 'package:aurcache/api/aur.dart';
import 'package:aurcache/models/aur_package.dart';
import '../../api/API.dart';
import 'BaseProvider.dart';
class AurSearchDTO {
final String query;
AurSearchDTO({required this.query});
}
class AURSearchProvider extends BaseProvider<List<AurPackage>, AurSearchDTO> {
@override
loadFuture(context, {dto}) {
data = API.getAurPackages(dto!.query);
this.dto = dto;
}
}

View File

@ -0,0 +1,20 @@
import 'package:aurcache/api/builds.dart';
import '../../api/API.dart';
import '../../models/build.dart';
import 'BaseProvider.dart';
class BuildDTO {
final int buildID;
BuildDTO({required this.buildID});
}
class BuildProvider extends BaseProvider<Build, BuildDTO> {
@override
loadFuture(context, {dto}) {
// todo search solution to force an exising dto
data = API.getBuild(dto!.buildID);
this.dto = dto;
}
}

View File

@ -0,0 +1,24 @@
import 'package:aurcache/api/builds.dart';
import '../../api/API.dart';
import '../../models/build.dart';
import 'BaseProvider.dart';
class BuildsDTO {
final int? pkgID;
final int? limit;
BuildsDTO({this.pkgID, this.limit});
}
class BuildsProvider extends BaseProvider<List<Build>, BuildsDTO> {
@override
loadFuture(context, {dto}) {
if (dto != null) {
data = API.listAllBuilds(pkgID: dto.pkgID, limit: dto.limit);
this.dto = dto;
} else {
data = API.listAllBuilds();
}
}
}

View File

@ -0,0 +1,20 @@
import 'package:aurcache/api/packages.dart';
import '../../api/API.dart';
import '../../models/package.dart';
import 'BaseProvider.dart';
class PackageDTO {
final int pkgID;
PackageDTO({required this.pkgID});
}
class PackageProvider extends BaseProvider<Package, PackageDTO> {
@override
loadFuture(context, {dto}) {
// todo search solution to force an exising dto
data = API.getPackage(dto!.pkgID);
this.dto = dto;
}
}

View File

@ -0,0 +1,19 @@
import 'package:aurcache/api/packages.dart';
import 'package:aurcache/providers/api/BaseProvider.dart';
import '../../api/API.dart';
import '../../models/package.dart';
class PackagesDTO {
final int limit;
PackagesDTO({required this.limit});
}
class PackagesProvider extends BaseProvider<List<Package>, PackagesDTO> {
@override
loadFuture(context, {dto}) {
data = API.listPackages(limit: dto?.limit);
this.dto = dto;
}
}

View File

@ -0,0 +1,12 @@
import 'package:aurcache/api/statistics.dart';
import '../../api/API.dart';
import 'BaseProvider.dart';
class StatsProvider extends BaseProvider {
@override
loadFuture(context, {dto}) {
data = API.listStats();
this.dto = dto;
}
}