diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 43a13b1..65e5176 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -13,10 +13,16 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@v1 + - uses: subosito/flutter-action@v2 with: - sdk: stable + channel: stable - name: Install dependencies run: dart pub get + - name: Install example dependencies + run: | + cd example/flutter_usage + flutter pub get + - name: Analyze project + run: dart analyze - name: Run tests run: dart test test/test_all.dart diff --git a/.github/workflows/publish_pub_dev.yml b/.github/workflows/publish_pub_dev.yml new file mode 100644 index 0000000..8105a6d --- /dev/null +++ b/.github/workflows/publish_pub_dev.yml @@ -0,0 +1,14 @@ +name: Publish to pub.dev + +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+*' + +jobs: + publish: + permissions: + id-token: write # Required for authentication using OIDC + uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1 + # with: + # working-directory: path/to/package/within/repository \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 07613a6..32c9c68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 4.1.0 +* Migrate from `flutter_lints` to `lints` package. +* Update SDK constraint to `>=3.0.0 <4.0.0`. +* Fix lint warnings and analysis issues. +* Add `dart analyze` to CI workflow. + ## 4.0.0 * Rewrite by fork [[fontify]](https://github.com/westracer/fontify) diff --git a/analysis_options.yaml b/analysis_options.yaml index 58426e1..fdf0476 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,161 +1,4 @@ include: package:lints/recommended.yaml -analyzer: - language: - strict-inference: true - strict-raw-types: true - strong-mode: - implicit-casts: false - implicit-dynamic: false - exclude: - # Build - - "**/build/**" - - "my_icons.dart" - # Test - - "**/*mock.dart" - -linter: - rules: - - always_declare_return_types - - always_put_control_body_on_new_line - - always_put_required_named_parameters_first - - always_require_non_null_named_parameters - - annotate_overrides - - avoid_annotating_with_dynamic - - avoid_bool_literals_in_conditional_expressions - - avoid_catches_without_on_clauses - - avoid_catching_errors - - avoid_classes_with_only_static_members - - avoid_double_and_int_checks - - avoid_empty_else - - avoid_equals_and_hash_code_on_mutable_classes - - avoid_field_initializers_in_const_classes - # - avoid_function_literals_in_foreach_calls - - avoid_implementing_value_types - - avoid_init_to_null - - avoid_js_rounded_ints - - avoid_null_checks_in_equality_operators - - avoid_print - - avoid_private_typedef_functions - - avoid_relative_lib_imports - - avoid_renaming_method_parameters - - avoid_return_types_on_setters - - avoid_returning_null - - avoid_returning_null_for_future - - avoid_returning_null_for_void - - avoid_returning_this - - avoid_setters_without_getters - - avoid_shadowing_type_parameters - - avoid_single_cascade_in_expression_statements - - avoid_slow_async_io - - avoid_types_as_parameter_names - - avoid_types_on_closure_parameters - - avoid_unnecessary_containers - - avoid_unused_constructor_parameters - - avoid_void_async - - avoid_web_libraries_in_flutter - - await_only_futures - - camel_case_extensions - - camel_case_types - - cancel_subscriptions - - cascade_invocations - - close_sinks - - comment_references - - constant_identifier_names - - control_flow_in_finally - - curly_braces_in_flow_control_structures - - diagnostic_describe_all_properties - - directives_ordering - - empty_catches - - empty_constructor_bodies - - empty_statements - - file_names - - hash_and_equals - - implementation_imports - - iterable_contains_unrelated_type - - join_return_with_assignment - - library_names - - library_prefixes - - list_remove_unrelated_type - - literal_only_boolean_expressions - - no_adjacent_strings_in_list - - no_duplicate_case_values - - non_constant_identifier_names - - null_closures - # - one_member_abstracts - - only_throw_errors - - overridden_fields - - package_api_docs - - package_names - - package_prefixed_library_names - - parameter_assignments - - prefer_adjacent_string_concatenation - - prefer_asserts_in_initializer_lists - - prefer_asserts_with_message - - prefer_collection_literals - - prefer_conditional_assignment - - prefer_const_constructors - - prefer_const_constructors_in_immutables - - prefer_const_declarations - - prefer_const_literals_to_create_immutables - - prefer_constructors_over_static_methods - - prefer_contains - - prefer_equal_for_default_values - - prefer_final_fields - - prefer_final_in_for_each - - prefer_final_locals - - prefer_for_elements_to_map_fromIterable - - prefer_foreach - - prefer_function_declarations_over_variables - - prefer_generic_function_type_aliases - - prefer_if_elements_to_conditional_expressions - - prefer_if_null_operators - - prefer_initializing_formals - - prefer_inlined_adds - - prefer_int_literals - - prefer_interpolation_to_compose_strings - - prefer_is_empty - - prefer_is_not_empty - - prefer_is_not_operator - - prefer_iterable_whereType - - prefer_mixin - - prefer_null_aware_operators - - prefer_relative_imports - - prefer_single_quotes - - prefer_spread_collections - - prefer_typing_uninitialized_variables - - prefer_void_to_null - - provide_deprecation_message - - recursive_getters - - slash_for_doc_comments - - sort_child_properties_last - - sort_constructors_first - - sort_pub_dependencies - - sort_unnamed_constructors_first - - test_types_in_equals - - throw_in_finally - - type_annotate_public_apis - - type_init_formals - - unawaited_futures - - unnecessary_await_in_return - - unnecessary_brace_in_string_interps - - unnecessary_const - - unnecessary_getters_setters - - unnecessary_lambdas - - unnecessary_new - - unnecessary_null_aware_assignments - - unnecessary_null_in_if_null_operators - - unnecessary_overrides - - unnecessary_parenthesis - - unnecessary_statements - - unnecessary_this - - unrelated_type_equality_checks - - unsafe_html - - use_full_hex_values_for_flutter_colors - - use_function_type_syntax_for_parameters - - use_rethrow_when_possible - - use_setters_to_change_properties - - use_string_buffers - - use_to_and_as_if_applicable - - valid_regexps - - void_checks \ No newline at end of file +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options \ No newline at end of file diff --git a/bin/generator.dart b/bin/generator.dart index c45b260..24f1177 100644 --- a/bin/generator.dart +++ b/bin/generator.dart @@ -47,14 +47,14 @@ void _run(CliArguments parsedArgs) { final isVerbose = parsedArgs.verbose ?? kDefaultVerbose; if (isVerbose) { - logger.setFilterLevel(Level.verbose); + logger.setFilterLevel(Level.trace); } final hasClassFile = parsedArgs.classFile != null; if (hasClassFile && !parsedArgs.classFile!.existsSync()) { parsedArgs.classFile!.createSync(recursive: true); } else if (hasClassFile) { - logger.v( + logger.t( 'Output file for a Flutter class already exists (${parsedArgs.classFile!.path}) - ' 'overwriting it'); } @@ -62,7 +62,7 @@ void _run(CliArguments parsedArgs) { if (!parsedArgs.fontFile.existsSync()) { parsedArgs.fontFile.createSync(recursive: true); } else { - logger.v( + logger.t( 'Output file for a font file already exists (${parsedArgs.fontFile.path}) - ' 'overwriting it'); } @@ -92,7 +92,7 @@ void _run(CliArguments parsedArgs) { writeToFile(parsedArgs.fontFile.path, otfResult.font); if (parsedArgs.classFile == null) { - logger.v('No output path for Flutter class was specified - ' + logger.t('No output path for Flutter class was specified - ' 'skipping class generation.'); } else { final fontFileName = p.basename(parsedArgs.fontFile.path); @@ -107,7 +107,7 @@ void _run(CliArguments parsedArgs) { if (parsedArgs.format ?? kDefaultFormat) { try { - logger.v('Formatting Flutter class generation.'); + logger.t('Formatting Flutter class generation.'); classString = formatter.format(classString); } on Object catch (e) { logger.e(e.toString()); diff --git a/example/flutter_usage/lib/main.dart b/example/flutter_usage/lib/main.dart index 40de764..95ba135 100644 --- a/example/flutter_usage/lib/main.dart +++ b/example/flutter_usage/lib/main.dart @@ -2,26 +2,30 @@ import 'package:flutter/material.dart'; import 'ui/icons.dart'; -void main() => runApp(MyApp()); +void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { + const MyApp({super.key}); + // This widget is the root of your application. @override Widget build(BuildContext context) => MaterialApp( title: 'Flutter Demo', theme: ThemeData(primarySwatch: Colors.blue), - home: MyHomePage(), + home: const MyHomePage(), ); } class MyHomePage extends StatelessWidget { + const MyHomePage({super.key}); + @override Widget build(BuildContext context) => Scaffold( appBar: AppBar( - title: Text('Icons view test'), + title: const Text('Icons view test'), ), body: Padding( - padding: EdgeInsets.all(16), + padding: const EdgeInsets.all(16), child: Column( children: [ UiIcons.account, @@ -30,7 +34,7 @@ class MyHomePage extends StatelessWidget { UiIcons.arrowRight, ] .map((iconData) => Padding( - padding: EdgeInsets.all(16), + padding: const EdgeInsets.all(16), child: Icon(iconData), )) .cast() diff --git a/example/flutter_usage/pubspec.lock b/example/flutter_usage/pubspec.lock index da392a4..168d12a 100644 --- a/example/flutter_usage/pubspec.lock +++ b/example/flutter_usage/pubspec.lock @@ -114,10 +114,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "4.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -137,7 +137,7 @@ packages: path: "../.." relative: true source: path - version: "4.0.0" + version: "4.1.0" leak_tracker: dependency: transitive description: @@ -166,10 +166,10 @@ packages: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "4.0.0" logger: dependency: transitive description: diff --git a/example/flutter_usage/pubspec.yaml b/example/flutter_usage/pubspec.yaml index a71a34a..60090eb 100644 --- a/example/flutter_usage/pubspec.yaml +++ b/example/flutter_usage/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0+1 publish_to: 'none' environment: - sdk: '>=2.19.2 <3.0.0' + sdk: ^3.0.0 flutter: '>=3.7.5 <4.0.0' dependencies: @@ -14,7 +14,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^2.0.1 + flutter_lints: ^4.0.0 icon_font_generator: path: ../../ diff --git a/lib/icon_font_generator.dart b/lib/icon_font_generator.dart index 4fc356e..80c2608 100644 --- a/lib/icon_font_generator.dart +++ b/lib/icon_font_generator.dart @@ -1,6 +1,5 @@ -library icon_font_generator; - export 'src/common.dart'; export 'src/otf.dart'; export 'src/svg.dart'; export 'src/utils.dart'; +// TODO: Test todo diff --git a/lib/src/cli/arguments.dart b/lib/src/cli/arguments.dart index 80ccab5..00f62d9 100644 --- a/lib/src/cli/arguments.dart +++ b/lib/src/cli/arguments.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'dart:math' as math; import 'package:args/args.dart'; -import 'package:collection/collection.dart'; + import 'package:yaml/yaml.dart'; import '../utils/enum_class.dart'; @@ -222,7 +222,7 @@ Map? parseConfig(String config) { } final entries = - iconFontGeneratoryamlmap.entries.map(_mapConfigKeyEntry).whereNotNull(); + iconFontGeneratoryamlmap.entries.map(_mapConfigKeyEntry).nonNulls; return Map.fromEntries(entries); } diff --git a/lib/src/common.dart b/lib/src/common.dart index 0e595f8..e9a4bd5 100644 --- a/lib/src/common.dart +++ b/lib/src/common.dart @@ -1,5 +1,3 @@ -library icon_font_generator.common; - export 'common/api.dart'; export 'common/generic_glyph.dart'; export 'common/outline.dart'; diff --git a/lib/src/otf.dart b/lib/src/otf.dart index 507177a..2e6c04e 100644 --- a/lib/src/otf.dart +++ b/lib/src/otf.dart @@ -1,5 +1,3 @@ -library icon_font_generator.otf; - export 'otf/otf.dart'; export 'otf/reader.dart'; export 'otf/stub.dart' if (dart.library.io) 'otf/io.dart'; diff --git a/lib/src/otf/cff/char_string.dart b/lib/src/otf/cff/char_string.dart index 25599f6..82c66ea 100644 --- a/lib/src/otf/cff/char_string.dart +++ b/lib/src/otf/cff/char_string.dart @@ -11,7 +11,7 @@ import 'operand.dart'; import 'operator.dart'; class CharStringOperand extends CFFOperand { - CharStringOperand(num? value, [int? size]) : super(value, size); + CharStringOperand(super.value, [super._size]); factory CharStringOperand.fromByteData( ByteData byteData, int offset, int b0) { @@ -462,8 +462,7 @@ class CharStringInterpreter { _pushCommand(_stack.toList().sublist(0, 11), 12, op); break; default: - debugUnsupportedFeature( - 'Unknown charString op: 12 $op'); + debugUnsupportedFeature('Unknown charString op: 12 $op'); _stack.clear(); } diff --git a/lib/src/otf/cff/charset.dart b/lib/src/otf/cff/charset.dart index ca5f4db..07db99e 100644 --- a/lib/src/otf/cff/charset.dart +++ b/lib/src/otf/cff/charset.dart @@ -1,4 +1,4 @@ -part of icon_font_generator.otf.cff; +part of '../table/cff.dart'; const _kFormat0 = 0; const _kFormat1 = 1; @@ -29,7 +29,7 @@ abstract class CharsetEntry implements BinaryCodable { } class CharsetEntryFormat1 extends CharsetEntry { - CharsetEntryFormat1(int format, this.rangeList) : super(format); + CharsetEntryFormat1(super.format, this.rangeList); factory CharsetEntryFormat1.fromByteData(ByteData byteData, int glyphCount) { final rangeList = []; diff --git a/lib/src/otf/cff/index.dart b/lib/src/otf/cff/index.dart index bfe044f..2a21b2a 100644 --- a/lib/src/otf/cff/index.dart +++ b/lib/src/otf/cff/index.dart @@ -136,37 +136,31 @@ class CFFIndexWithData implements BinaryCodable, CalculatableOffsets { final bool isCFF1; static Object Function(ByteData) _getDecoderForType(Type type) { - switch (type) { - case Uint8List: - return (bd) => Uint8List.fromList( - bd.buffer.asUint8List(bd.offsetInBytes, bd.lengthInBytes)); - case CFFDict: - return CFFDict.fromByteData; - default: + if (type == Uint8List) { + return (bd) => Uint8List.fromList( + bd.buffer.asUint8List(bd.offsetInBytes, bd.lengthInBytes)); + } else if (type == CFFDict) { + return CFFDict.fromByteData; } throw UnsupportedError('No decoder for type $type'); } void Function(ByteData, T) _getEncoder() { - switch (T) { - case Uint8List: - return (bd, list) => bd.setByteList(0, list as Uint8List); - case CFFDict: - return (bd, dict) => (dict as CFFDict).encodeToBinary(bd); - default: + if (T == Uint8List) { + return (bd, list) => bd.setByteList(0, list as Uint8List); + } else if (T == CFFDict) { + return (bd, dict) => (dict as CFFDict).encodeToBinary(bd); } throw UnsupportedError('No encoder for type $T'); } int Function(T) _getByteLengthCallback() { - switch (T) { - case Uint8List: - return (list) => (list as Uint8List).lengthInBytes; - case CFFDict: - return (dict) => (dict as CFFDict).size; - default: + if (T == Uint8List) { + return (list) => (list as Uint8List).lengthInBytes; + } else if (T == CFFDict) { + return (dict) => (dict as CFFDict).size; } throw UnsupportedError('No length callback for type $T'); diff --git a/lib/src/otf/cff/standard_string.dart b/lib/src/otf/cff/standard_string.dart index aefdf42..3cad9be 100644 --- a/lib/src/otf/cff/standard_string.dart +++ b/lib/src/otf/cff/standard_string.dart @@ -1,4 +1,4 @@ -part of icon_font_generator.otf.cff; +part of '../table/cff.dart'; final _cffStandardStringCount = _kCffStandardStringList.length; diff --git a/lib/src/otf/reader.dart b/lib/src/otf/reader.dart index 0d867b4..388593c 100644 --- a/lib/src/otf/reader.dart +++ b/lib/src/otf/reader.dart @@ -117,7 +117,7 @@ class OTFReader { /// Throws [ChecksumException] if calculated checksum is different than expected void _validateChecksums() { final byteDataCopy = ByteData.sublistView( - Uint8List.fromList([..._byteData.buffer.asUint8List().toList()])) + Uint8List.fromList([..._byteData.buffer.asUint8List()])) ..setUint32(_font.head.entry!.offset + 8, 0); // Setting head table's checkSumAdjustment to 0 diff --git a/lib/src/otf/table/cff.dart b/lib/src/otf/table/cff.dart index f815e15..2ea7100 100644 --- a/lib/src/otf/table/cff.dart +++ b/lib/src/otf/table/cff.dart @@ -1,5 +1,3 @@ -library icon_font_generator.otf.cff; - import 'dart:typed_data'; import '../../common/calculatable_offsets.dart'; @@ -31,8 +29,7 @@ const _kMajorVersion1 = 0x0001; const _kMajorVersion2 = 0x0002; abstract class CFFTable extends FontTable { - CFFTable.fromTableRecordEntry(TableRecordEntry? entry) - : super.fromTableRecordEntry(entry); + CFFTable.fromTableRecordEntry(super.entry) : super.fromTableRecordEntry(); static CFFTable? fromByteData(ByteData byteData, TableRecordEntry entry) { final major = byteData.getUint8(entry.offset); diff --git a/lib/src/otf/table/cff1.dart b/lib/src/otf/table/cff1.dart index 0916f86..d7ed816 100644 --- a/lib/src/otf/table/cff1.dart +++ b/lib/src/otf/table/cff1.dart @@ -1,4 +1,4 @@ -part of icon_font_generator.otf.cff; +part of 'cff.dart'; const _kCFF1HeaderSize = 4; @@ -44,7 +44,7 @@ class CFF1TableHeader implements BinaryCodable { class CFF1Table extends CFFTable implements CalculatableOffsets { CFF1Table( - TableRecordEntry? entry, + super.entry, this.header, this.nameIndex, this.topDicts, @@ -55,7 +55,7 @@ class CFF1Table extends CFFTable implements CalculatableOffsets { this.fontDictList, this.privateDictList, this.localSubrsDataList, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory CFF1Table.fromByteData( ByteData byteData, diff --git a/lib/src/otf/table/cff2.dart b/lib/src/otf/table/cff2.dart index 9c0c032..f920f03 100644 --- a/lib/src/otf/table/cff2.dart +++ b/lib/src/otf/table/cff2.dart @@ -1,4 +1,4 @@ -part of icon_font_generator.otf.cff; +part of 'cff.dart'; const _kCFF2HeaderSize = 5; @@ -38,7 +38,7 @@ class CFF2TableHeader implements BinaryCodable { class CFF2Table extends CFFTable implements CalculatableOffsets { CFF2Table( - TableRecordEntry? entry, + super.entry, this.header, this.topDict, this.globalSubrsData, @@ -47,7 +47,7 @@ class CFF2Table extends CFFTable implements CalculatableOffsets { this.fontDictList, this.privateDictList, this.localSubrsDataList, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory CFF2Table.fromByteData( ByteData byteData, diff --git a/lib/src/otf/table/cmap.dart b/lib/src/otf/table/cmap.dart index 5da601c..c8a64ef 100644 --- a/lib/src/otf/table/cmap.dart +++ b/lib/src/otf/table/cmap.dart @@ -140,7 +140,9 @@ class CharacterToGlyphTableHeader implements BinaryCodable { @override void encodeToBinary(ByteData byteData) { - byteData..setUint16(0, version)..setUint16(2, numTables); + byteData + ..setUint16(0, version) + ..setUint16(2, numTables); for (var i = 0; i < encodingRecords.length; i++) { final r = encodingRecords[i]; @@ -189,8 +191,7 @@ abstract class CmapData implements BinaryCodable { class CmapByteEncodingTable extends CmapData { CmapByteEncodingTable( - int format, this.length, this.language, this.glyphIdArray) - : super(format); + super.format, this.length, this.language, this.glyphIdArray); factory CmapByteEncodingTable.fromByteData(ByteData byteData, int offset) { return CmapByteEncodingTable( @@ -228,7 +229,7 @@ class CmapByteEncodingTable extends CmapData { class CmapSegmentMappingToDeltaValuesTable extends CmapData { CmapSegmentMappingToDeltaValuesTable( - int format, + super.format, this.length, this.language, this.segCount, @@ -240,8 +241,7 @@ class CmapSegmentMappingToDeltaValuesTable extends CmapData { this.startCode, this.idDelta, this.idRangeOffset, - this.glyphIdArray) - : super(format); + this.glyphIdArray); factory CmapSegmentMappingToDeltaValuesTable.fromByteData( ByteData byteData, int startOffset) { @@ -387,13 +387,13 @@ class CmapSegmentMappingToDeltaValuesTable extends CmapData { class CmapSegmentedCoverageTable extends CmapData { CmapSegmentedCoverageTable( - int format, + super.format, this.reserved, this.length, this.language, this.numGroups, this.groups, - ) : super(format); + ); factory CmapSegmentedCoverageTable.fromByteData( ByteData byteData, int offset) { @@ -462,10 +462,10 @@ class CmapSegmentedCoverageTable extends CmapData { class CharacterToGlyphTable extends FontTable { CharacterToGlyphTable( - TableRecordEntry? entry, + super.entry, this.header, this.data, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory CharacterToGlyphTable.fromByteData( ByteData byteData, @@ -486,7 +486,7 @@ class CharacterToGlyphTable extends FontTable { final fullCharCodeList = fullGlyphList .map((e) => e.metadata.charCode) .toList() - ..removeAt(0); // removing .notdef + ..removeAt(0); // removing .notdef final charCodeList = fullCharCodeList.whereType().toList(); final segmentList = _generateSegments(charCodeList); diff --git a/lib/src/otf/table/glyf.dart b/lib/src/otf/table/glyf.dart index 70d6906..a1a869e 100644 --- a/lib/src/otf/table/glyf.dart +++ b/lib/src/otf/table/glyf.dart @@ -12,9 +12,9 @@ import 'table_record_entry.dart'; class GlyphDataTable extends FontTable { GlyphDataTable( - TableRecordEntry? entry, + super.entry, this.glyphList, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory GlyphDataTable.fromByteData(ByteData byteData, TableRecordEntry entry, IndexToLocationTable locationTable, int numGlyphs) { diff --git a/lib/src/otf/table/gsub.dart b/lib/src/otf/table/gsub.dart index e4fdcf8..fb07922 100644 --- a/lib/src/otf/table/gsub.dart +++ b/lib/src/otf/table/gsub.dart @@ -74,9 +74,9 @@ class GlyphSubstitutionTableHeader implements BinaryCodable { } class GlyphSubstitutionTable extends FontTable { - GlyphSubstitutionTable(TableRecordEntry? entry, this.header, - this.scriptListTable, this.featureListTable, this.lookupListTable) - : super.fromTableRecordEntry(entry); + GlyphSubstitutionTable(super.entry, this.header, this.scriptListTable, + this.featureListTable, this.lookupListTable) + : super.fromTableRecordEntry(); factory GlyphSubstitutionTable.fromByteData( ByteData byteData, diff --git a/lib/src/otf/table/head.dart b/lib/src/otf/table/head.dart index 5b4c647..176a6e7 100644 --- a/lib/src/otf/table/head.dart +++ b/lib/src/otf/table/head.dart @@ -20,7 +20,7 @@ const _kHeaderTableSize = 54; class HeaderTable extends FontTable { HeaderTable( - TableRecordEntry? entry, + super.entry, this.fontRevision, this.checkSumAdjustment, this.flags, @@ -39,10 +39,10 @@ class HeaderTable extends FontTable { fontDirectionHint = 2, glyphDataFormat = 0, magicNumber = _kMagicNumber, - super.fromTableRecordEntry(entry); + super.fromTableRecordEntry(); HeaderTable._( - TableRecordEntry entry, + super.entry, this.majorVersion, this.minorVersion, this.fontRevision, @@ -61,7 +61,7 @@ class HeaderTable extends FontTable { this.fontDirectionHint, this.indexToLocFormat, this.glyphDataFormat) - : super.fromTableRecordEntry(entry); + : super.fromTableRecordEntry(); factory HeaderTable.fromByteData(ByteData data, TableRecordEntry entry) => HeaderTable._( diff --git a/lib/src/otf/table/hhea.dart b/lib/src/otf/table/hhea.dart index c8b5ff9..bf88c94 100644 --- a/lib/src/otf/table/hhea.dart +++ b/lib/src/otf/table/hhea.dart @@ -10,7 +10,7 @@ const _kHheaTableSize = 36; class HorizontalHeaderTable extends FontTable { HorizontalHeaderTable( - TableRecordEntry? entry, + super.entry, this.majorVersion, this.minorVersion, this.ascender, @@ -25,7 +25,7 @@ class HorizontalHeaderTable extends FontTable { this.caretOffset, this.metricDataFormat, this.numberOfHMetrics, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory HorizontalHeaderTable.fromByteData( ByteData byteData, TableRecordEntry entry) { diff --git a/lib/src/otf/table/hmtx.dart b/lib/src/otf/table/hmtx.dart index 0878398..d1516bf 100644 --- a/lib/src/otf/table/hmtx.dart +++ b/lib/src/otf/table/hmtx.dart @@ -49,10 +49,10 @@ class LongHorMetric implements BinaryCodable { class HorizontalMetricsTable extends FontTable { HorizontalMetricsTable( - TableRecordEntry? entry, + super.entry, this.hMetrics, this.leftSideBearings, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory HorizontalMetricsTable.fromByteData(ByteData byteData, TableRecordEntry entry, HorizontalHeaderTable hhea, int numGlyphs) { diff --git a/lib/src/otf/table/loca.dart b/lib/src/otf/table/loca.dart index cc91016..13f2a5f 100644 --- a/lib/src/otf/table/loca.dart +++ b/lib/src/otf/table/loca.dart @@ -7,10 +7,10 @@ import 'table_record_entry.dart'; class IndexToLocationTable extends FontTable { IndexToLocationTable( - TableRecordEntry? entry, + super.entry, this.glyphOffsets, this._isShort, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory IndexToLocationTable.fromByteData(ByteData byteData, TableRecordEntry entry, int indexToLocFormat, int numGlyphs) { diff --git a/lib/src/otf/table/maxp.dart b/lib/src/otf/table/maxp.dart index 2c88178..7b09275 100644 --- a/lib/src/otf/table/maxp.dart +++ b/lib/src/otf/table/maxp.dart @@ -16,7 +16,7 @@ const _kTableSizeForVersion = { }; class MaximumProfileTable extends FontTable { - MaximumProfileTable.v0(TableRecordEntry? entry, this.numGlyphs) + MaximumProfileTable.v0(super.entry, this.numGlyphs) : version = _kVersion0, maxPoints = null, maxContours = null, @@ -31,10 +31,10 @@ class MaximumProfileTable extends FontTable { maxSizeOfInstructions = null, maxComponentElements = null, maxComponentDepth = null, - super.fromTableRecordEntry(entry); + super.fromTableRecordEntry(); MaximumProfileTable.v1( - TableRecordEntry? entry, + super.entry, this.numGlyphs, this.maxPoints, this.maxContours, @@ -50,7 +50,7 @@ class MaximumProfileTable extends FontTable { this.maxComponentElements, this.maxComponentDepth) : version = _kVersion1, - super.fromTableRecordEntry(entry); + super.fromTableRecordEntry(); factory MaximumProfileTable.create(int numGlyphs, GlyphDataTable? glyf) { final isOpenType = glyf == null; diff --git a/lib/src/otf/table/name.dart b/lib/src/otf/table/name.dart index 0e09bf5..0bfa121 100644 --- a/lib/src/otf/table/name.dart +++ b/lib/src/otf/table/name.dart @@ -223,8 +223,7 @@ class NamingTableFormat0Header implements BinaryCodable { } abstract class NamingTable extends FontTable { - NamingTable.fromTableRecordEntry(TableRecordEntry? entry) - : super.fromTableRecordEntry(entry); + NamingTable.fromTableRecordEntry(super.entry) : super.fromTableRecordEntry(); static NamingTable? fromByteData(ByteData byteData, TableRecordEntry entry) { final format = byteData.getUint16(entry.offset); @@ -257,10 +256,10 @@ abstract class NamingTable extends FontTable { class NamingTableFormat0 extends NamingTable { NamingTableFormat0( - TableRecordEntry? entry, + super.entry, this.header, this.stringList, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory NamingTableFormat0.create( String fontName, String? description, Revision revision) { diff --git a/lib/src/otf/table/os2.dart b/lib/src/otf/table/os2.dart index a91bedc..637094e 100644 --- a/lib/src/otf/table/os2.dart +++ b/lib/src/otf/table/os2.dart @@ -44,7 +44,7 @@ const _kDefaultPANOSE = [2, 0, 5, 3, 0, 0, 0, 0, 0, 0]; class OS2Table extends FontTable { OS2Table._( - TableRecordEntry? entry, + super.entry, this.version, this.xAvgCharWidth, this.usWeightClass, @@ -84,7 +84,7 @@ class OS2Table extends FontTable { this.usMaxContext, this.usLowerOpticalPointSize, this.usUpperOpticalPointSize, - ) : super.fromTableRecordEntry(entry); + ) : super.fromTableRecordEntry(); factory OS2Table.fromByteData(ByteData byteData, TableRecordEntry entry) { final version = byteData.getInt16(entry.offset); diff --git a/lib/src/otf/table/post.dart b/lib/src/otf/table/post.dart index d782c58..926d166 100644 --- a/lib/src/otf/table/post.dart +++ b/lib/src/otf/table/post.dart @@ -157,8 +157,7 @@ class PostScriptVersion20 extends PostScriptData { final numberOfGlyphs = glyphNameIndex.length; - final glyphNames = - glyphNameList.map(PascalString.fromString).toList(); + final glyphNames = glyphNameList.map(PascalString.fromString).toList(); return PostScriptVersion20( numberOfGlyphs, @@ -217,8 +216,8 @@ class PostScriptVersion20 extends PostScriptData { } class PostScriptTable extends FontTable { - PostScriptTable(TableRecordEntry? entry, this.header, this.data) - : super.fromTableRecordEntry(entry); + PostScriptTable(super.entry, this.header, this.data) + : super.fromTableRecordEntry(); factory PostScriptTable.fromByteData( ByteData byteData, TableRecordEntry entry) { diff --git a/lib/src/svg.dart b/lib/src/svg.dart index 4c23206..5aa12a1 100644 --- a/lib/src/svg.dart +++ b/lib/src/svg.dart @@ -1,3 +1 @@ -library icon_font_generator.svg; - export 'svg/svg.dart'; diff --git a/lib/src/svg/outline_converter.dart b/lib/src/svg/outline_converter.dart index 7b5604b..2554f92 100644 --- a/lib/src/svg/outline_converter.dart +++ b/lib/src/svg/outline_converter.dart @@ -71,7 +71,7 @@ class PathToOutlineConverter extends PathProxy { _isOnCurve.addAll([false, false, true]); } - /// Converts SVG to a list of outlines. + /// Converts SVG `` to a list of outlines. List convert() { writeSvgPathDataToPath(path.data, this); diff --git a/lib/src/svg/unknown_element.dart b/lib/src/svg/unknown_element.dart index 6b7ce33..8f34ccf 100644 --- a/lib/src/svg/unknown_element.dart +++ b/lib/src/svg/unknown_element.dart @@ -1,8 +1,5 @@ -import 'package:xml/xml.dart'; - import 'element.dart'; class UnknownElement extends SvgElement { - UnknownElement(SvgElement? parent, XmlElement? element) - : super(parent, element); + UnknownElement(super.parent, super.element); } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 22bd3c0..7605725 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -1,4 +1,2 @@ -library icon_font_generator.utils; - export 'utils/exception.dart'; export 'utils/flutter_class_gen.dart'; diff --git a/pubspec.yaml b/pubspec.yaml index 1441492..0a90099 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,12 +1,12 @@ name: icon_font_generator -version: 4.0.0 +version: 4.1.0 description: >- Converts SVG icons to OTF font and generates Flutter-compatible class. Provides an API and a CLI tool. homepage: https://github.com/ScerIO/icon_font_generator environment: - sdk: '>=2.19.2 <4.0.0' + sdk: '>=3.0.0 <4.0.0' dependencies: args: ^2.4.0