feat: scheme download feature.
This commit is contained in:
@@ -54,7 +54,7 @@ class _ContentState extends State<Content> {
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
LocalManager(),
|
||||
LocalManager(key: H.localManagerKey),
|
||||
GestureEditor(),
|
||||
MarketOrMe(),
|
||||
],
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user