wip: gesture solution.

This commit is contained in:
2021-10-07 09:38:12 +08:00
parent 56c7262ba3
commit fbbbffe7af
13 changed files with 356 additions and 57 deletions
+11 -3
View File
@@ -12,9 +12,13 @@ class AnnotationField {
}
class ProviderGenerator extends GeneratorForAnnotation<ProviderModel> {
var _preClassName;
@override
generateForAnnotatedElement(Element element, ConstantReader annotation, BuildStep buildStep) {
var className = (element as ClassElement).source.shortName;
var needImports = className != _preClassName;
_preClassName = className;
List<AnnotationField> fields = [];
element.fields.forEach((field) {
var annotation = field.metadata.firstWhereOrNull(
@@ -29,11 +33,14 @@ class ProviderGenerator extends GeneratorForAnnotation<ProviderModel> {
),
);
});
return '''
return [
if (needImports)
'''
import 'package:flutter/foundation.dart';
import 'package:dde_gesture_manager/extensions/compare_extension.dart';
import '$className';
''',
'''
class ${element.displayName}Provider extends ${element.displayName} with ChangeNotifier {
void setProps({
${fields.map((f) => '${f.type.endsWith('?') ? '' : 'required '}${f.type} ${f.name},').join('\n')}
@@ -43,6 +50,7 @@ class ${element.displayName}Provider extends ${element.displayName} with ChangeN
if (changed) notifyListeners();
}
}
''';
'''
];
}
}