feat: scheme download feature.

This commit is contained in:
2022-01-19 18:54:42 +08:00
parent 44b5df3d24
commit a124f765cc
7 changed files with 60 additions and 35 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ class _ContentState extends State<Content> {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
LocalManager(),
LocalManager(key: H.localManagerKey),
GestureEditor(),
MarketOrMe(),
],
+25 -11
View File
@@ -9,6 +9,7 @@ import 'package:dde_gesture_manager/models/scheme.dart';
import 'package:dde_gesture_manager/models/scheme.provider.dart';
import 'package:dde_gesture_manager/models/settings.provider.dart';
import 'package:dde_gesture_manager/widgets/dde_button.dart';
import 'package:dde_gesture_manager_api/models.dart' show SchemeForDownload;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
@@ -19,10 +20,10 @@ class LocalManager extends StatefulWidget {
}) : super(key: key);
@override
State<LocalManager> createState() => _LocalManagerState();
State<LocalManager> createState() => LocalManagerState();
}
class _LocalManagerState extends State<LocalManager> {
class LocalManagerState extends State<LocalManager> {
late ScrollController _scrollController;
String? _hoveringItemPath;
late String _selectedItemPath;
@@ -69,6 +70,27 @@ class _LocalManagerState extends State<LocalManager> {
context.read<GesturePropProvider>().copyFrom(GestureProp.empty());
}
Future addLocalScheme(BuildContext context, [SchemeForDownload? downloadedScheme = null]) async {
var localSchemesProvider = context.read<LocalSchemesProvider>();
var newSchemes = [...?localSchemesProvider.schemes];
var newEntry = await localSchemesProvider.create();
if (downloadedScheme != null) {
newEntry.scheme
..id = downloadedScheme.uuid
..name = downloadedScheme.name
..description = downloadedScheme.description
..uploaded = true
..fromMarket = true
..gestures = (downloadedScheme.gestures ?? []).map(GestureProp.parse).toList();
}
newSchemes.add(newEntry);
localSchemesProvider.setProps(schemes: newSchemes..sort());
setState(() {
_selectedItemPath = newEntry.path;
});
_handleItemClick(context, newEntry);
}
@override
Widget build(BuildContext context) {
var isOpen = context.watch<ContentLayoutProvider>().localManagerOpened == true;
@@ -192,15 +214,7 @@ class _LocalManagerState extends State<LocalManager> {
DButton.add(
enabled: true,
onTap: () async {
var localSchemesProvider = context.read<LocalSchemesProvider>();
var newSchemes = [...?localSchemesProvider.schemes];
var newEntry = await localSchemesProvider.create();
newSchemes.add(newEntry);
localSchemesProvider.setProps(schemes: newSchemes..sort());
setState(() {
_selectedItemPath = newEntry.path;
});
_handleItemClick(context, newEntry);
await addLocalScheme(context);
},
),
DButton.delete(