feat: add CopyFunc to provider generator; add local solution provider; update dde data table style.
This commit is contained in:
@@ -30,7 +30,9 @@ class GestureEditor extends StatelessWidget {
|
||||
Center(
|
||||
child: Text('${LocaleKeys.gesture_editor_gestures}.${H.getGestureName(gesture.gesture)}').tr(),
|
||||
),
|
||||
Text('${LocaleKeys.gesture_editor_directions}.${H.getGestureDirectionName(gesture.direction)}').tr(),
|
||||
Center(
|
||||
child: Text('${LocaleKeys.gesture_editor_directions}.${H.getGestureDirectionName(gesture.direction)}')
|
||||
.tr()),
|
||||
Center(
|
||||
child: Text('${gesture.fingers}'),
|
||||
),
|
||||
@@ -126,15 +128,15 @@ class GestureEditor extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
dataRowColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
|
||||
if (states.contains(MaterialState.hovered)) return Colors.grey;
|
||||
if (states.contains(MaterialState.selected)) return Colors.green;
|
||||
if (states.contains(MaterialState.hovered)) return context.t.dialogBackgroundColor;
|
||||
if (states.contains(MaterialState.selected)) return Colors.blueAccent;
|
||||
return null;
|
||||
}),
|
||||
columns: [
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_gesture.tr())),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_direction.tr())),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_fingers.tr())),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_type.tr())),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_gesture.tr()), center: true),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_direction.tr()), center: true),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_fingers.tr()), center: true),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_type.tr()), center: true),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_command.tr())),
|
||||
DDataColumn(label: Text(LocaleKeys.gesture_editor_remark.tr())),
|
||||
],
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:dde_gesture_manager/extensions.dart';
|
||||
import 'package:dde_gesture_manager/models/local_solutions_provider.dart';
|
||||
import 'package:dde_gesture_manager/models/solution.provider.dart';
|
||||
import 'package:dde_gesture_manager/pages/content.dart';
|
||||
import 'package:dde_gesture_manager/pages/footer.dart';
|
||||
@@ -65,6 +66,7 @@ class _HomePageState extends State<HomePage> {
|
||||
}
|
||||
''')),
|
||||
ChangeNotifierProvider(create: (context) => GesturePropProvider.empty()),
|
||||
ChangeNotifierProvider(create: (context) => LocalSolutionsProvider(),lazy: false),
|
||||
],
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
|
||||
@@ -1,20 +1,45 @@
|
||||
import 'package:dde_gesture_manager/constants/constants.dart';
|
||||
import 'package:dde_gesture_manager/extensions.dart';
|
||||
import 'package:dde_gesture_manager/models/content_layout.provider.dart';
|
||||
import 'package:dde_gesture_manager/models/local_solutions_provider.dart';
|
||||
import 'package:dde_gesture_manager/models/solution.provider.dart';
|
||||
import 'package:dde_gesture_manager/widgets/dde_button.dart';
|
||||
import 'package:flutter/animation.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/painting.dart';
|
||||
|
||||
class LocalManager extends StatelessWidget {
|
||||
class LocalManager extends StatefulWidget {
|
||||
const LocalManager({
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<LocalManager> createState() => _LocalManagerState();
|
||||
}
|
||||
|
||||
class _LocalManagerState extends State<LocalManager> {
|
||||
late ScrollController _scrollController;
|
||||
int? _hoveringIndex;
|
||||
int? _selectedIndex;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_scrollController = ScrollController();
|
||||
}
|
||||
|
||||
Color _getItemBackgroundColor(int index) {
|
||||
Color _color = index % 2 == 0 ? context.t.scaffoldBackgroundColor : context.t.backgroundColor;
|
||||
if (index == _hoveringIndex) _color = context.t.scaffoldBackgroundColor;
|
||||
if (index == _selectedIndex) _color = Colors.blueAccent;
|
||||
return _color;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var isOpen = context.watch<ContentLayoutProvider>().localManagerOpened == true;
|
||||
var localSolutions = context.watch<LocalSolutionsProvider>().solutions ?? [];
|
||||
return AnimatedContainer(
|
||||
duration: mediumDuration,
|
||||
curve: Curves.easeInOut,
|
||||
@@ -57,6 +82,57 @@ class LocalManager extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
),
|
||||
Flexible(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
child: ListView.builder(
|
||||
controller: _scrollController,
|
||||
itemBuilder: (context, index) => GestureDetector(
|
||||
onDoubleTap: () {
|
||||
context.read<SolutionProvider>().copyFrom(localSolutions[index].solution);
|
||||
setState(() {
|
||||
_selectedIndex = index;
|
||||
});
|
||||
},
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_selectedIndex = index;
|
||||
});
|
||||
},
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
onEnter: (_) {
|
||||
setState(() {
|
||||
_hoveringIndex = index;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
color: _getItemBackgroundColor(index),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(right: 12.0),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(localSolutions[index].solution.name ?? ''),
|
||||
Text('456'),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
itemCount: localSolutions.length,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 150,
|
||||
color: Colors.black,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user