Skip to content

Commit

Permalink
Export extensions instead of generating them
Browse files Browse the repository at this point in the history
  • Loading branch information
Pante committed Jun 15, 2024
1 parent f745547 commit 55d808f
Show file tree
Hide file tree
Showing 13 changed files with 154 additions and 269 deletions.
14 changes: 4 additions & 10 deletions .github/workflows/nitrogen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,10 @@ jobs:
working-directory: nitrogen
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart analyze --fatal-warnings
- run: dart run coverage:test_with_coverage
- run: sudo apt-get update -y
- run: sudo apt-get install -y lcov
- run: lcov --remove ./coverage/lcov.info '**.g.dart' -o ./coverage/lcov.info
- uses: codecov/codecov-action@v4
with:
files: ./nitrogen/coverage/lcov.info
- uses: subosito/[email protected]
- run: flutter pub get
- run: flutter analyze --fatal-warnings
- run: flutter test

test-nitrogen-flutter-svg:
name: Run nitrogen_flutter_svg tests
Expand Down
1 change: 0 additions & 1 deletion nitrogen/lib/nitrogen_extension.dart

This file was deleted.

2 changes: 1 addition & 1 deletion nitrogen/test/src/libraries_test.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:code_builder/code_builder.dart';
import 'package:nitrogen/nitrogen_extension.dart';
import 'package:nitrogen/src/libraries.dart';
import 'package:test/test.dart';

void main() {
Expand Down
4 changes: 4 additions & 0 deletions nitrogen_flutter_svg/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.3.0

Export instead of generate extension.

## 0.2.0+1

* Add dependency on Flutter SDK
Expand Down
83 changes: 57 additions & 26 deletions nitrogen_flutter_svg/lib/nitrogen_flutter_svg.dart
Original file line number Diff line number Diff line change
@@ -1,28 +1,59 @@
import 'dart:async';

import 'package:build/build.dart';
import 'package:nitrogen_flutter_svg/src/svg_extension_generator.dart';
import 'package:path/path.dart';

/// Creates a [NitrogenFlutterSvgBuilder].
Builder nitrogenFlutterSvgBuilder(BuilderOptions options) => NitrogenFlutterSvgBuilder();

/// A Nitrogen builder.
class NitrogenFlutterSvgBuilder extends Builder {

@override
FutureOr<void> build(BuildStep buildStep) async {
await buildStep.writeAsString(
AssetId(buildStep.inputId.package, join('lib', 'src', 'svg_extension.nitrogen.dart')),
SvgExtensionGenerator().generate(),
);
}

@override
Map<String, List<String>> get buildExtensions => {
r'$package$': [
'lib/src/svg_extension.nitrogen.dart',
],
};
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:nitrogen_types/nitrogen_types.dart';

/// Provides functions for converting an [SvgAsset] to a [SvgPicture].
///
/// ```dart
/// class Foo extends StatelessWidget {
/// final SvgAsset asset;
///
/// @override
/// Widget build(BuildContext context) => Container(
/// child: asset(
/// width: 100,
/// height: 100,
/// ),
/// );
/// }
/// ```
extension SvgAssetExtension on SvgAsset {
/// Converts an [SvgAsset] to an [SvgPicture].
SvgPicture call({
Key? key,
bool matchTextDirection = false,
double? width,
double? height,
BoxFit fit = BoxFit.contain,
AlignmentGeometry alignment = Alignment.center,
bool allowDrawingOutsideViewBox = false,
WidgetBuilder? placeholderBuilder,
String? semanticsLabel,
bool excludeFromSemantics = false,
Clip clipBehavior = Clip.hardEdge,
SvgTheme theme = const SvgTheme(),
ColorFilter? colorFilter,
@Deprecated('Parameter is deprecated in flutter_svg') Color? color,
@Deprecated('Parameter is deprecated in flutter_svg') BlendMode colorBlendMode = BlendMode.srcIn,
@Deprecated('Parameter is deprecated in flutter_svg') bool cacheColorFilter = false,
}) => SvgPicture.asset(
path,
key: key,
matchTextDirection: matchTextDirection,
package: package,
width: width,
height: height,
fit: fit,
alignment: alignment,
allowDrawingOutsideViewBox: allowDrawingOutsideViewBox,
placeholderBuilder: placeholderBuilder,
semanticsLabel: semanticsLabel,
excludeFromSemantics: excludeFromSemantics,
clipBehavior: clipBehavior,
theme: theme,
colorFilter: colorFilter,
color: color,
colorBlendMode: colorBlendMode,
cacheColorFilter: cacheColorFilter,
);
}
85 changes: 0 additions & 85 deletions nitrogen_flutter_svg/lib/src/svg_extension_generator.dart

This file was deleted.

14 changes: 4 additions & 10 deletions nitrogen_flutter_svg/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,28 +1,22 @@
name: nitrogen_flutter_svg
description: Companion library for Nitrogen. Provides flutter_svg bindings for code generated by Nitrogen.

version: 0.2.0+1
version: 0.3.0+1
homepage: https://github.com/forus-labs/cauldron/nitrogen
repository: https://github.com/forus-labs/cauldron/

environment:
sdk: '>=3.3.0 <4.0.0'

dependencies:
build: ^2.4.1
build_runner: ^2.4.6
code_builder: ^4.10.0
flutter:
sdk: flutter
# We depend on flutter_svg so that users installing this extension will get a version compatible with the flutter_svg
# version that they're using.
flutter_svg: ^2.0.9
nitrogen: ^0.2.0
path: ^1.9.0
nitrogen_types: ^0.2.0

dev_dependencies:
flint: ^2.7.0

dependency_overrides:
nitrogen:
path: ../nitrogen
nitrogen_types:
path: ../nitrogen_types
4 changes: 4 additions & 0 deletions nitrogen_lottie/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.3.0

Export instead of generate extension.

## 0.2.0+1

* Add dependency on Flutter SDK
Expand Down
99 changes: 73 additions & 26 deletions nitrogen_lottie/lib/nitrogen_lottie.dart
Original file line number Diff line number Diff line change
@@ -1,28 +1,75 @@
import 'dart:async';

import 'package:build/build.dart';
import 'package:nitrogen_lottie/src/lottie_extension_generator.dart';
import 'package:path/path.dart';

/// Creates a [NitrogenLottieBuilder].
Builder nitrogenLottieBuilder(BuilderOptions options) => NitrogenLottieBuilder();

/// A Nitrogen builder.
class NitrogenLottieBuilder extends Builder {

@override
FutureOr<void> build(BuildStep buildStep) async {
await buildStep.writeAsString(
AssetId(buildStep.inputId.package, join('lib', 'src', 'lottie_extension.nitrogen.dart')),
LottieExtensionGenerator().generate(),
);
}

@override
Map<String, List<String>> get buildExtensions => {
r'$package$': [
'lib/src/lottie_extension.nitrogen.dart',
],
};
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import 'package:nitrogen_types/nitrogen_types.dart';

/// Provides functions for converting a [LottieAsset] to a [LottieBuilder].
///
/// ```dart
/// class Foo extends StatelessWidget {
/// final LottieAsset asset;
///
/// @override
/// Widget build(BuildContext context) => Container(
/// child: asset(
/// width: 100,
/// height: 100,
/// ),
/// );
/// }
/// ```
extension LottieAssetExtension on LottieAsset {
/// Converts a [LottieAsset] to a [LottieBuilder].
LottieBuilder call({
Animation<double>? controller,
FrameRate? frameRate,
bool? animate,
bool? reverse,
bool? repeat,
LottieDelegates? delegates,
LottieOptions? options,
LottieImageProviderFactory? imageProviderFactory,
void Function(LottieComposition)? onLoaded,
Key? key,
Widget Function(
BuildContext context,
Widget child,
LottieComposition? composition,
)? frameBuilder,
ImageErrorWidgetBuilder? errorBuilder,
double? width,
double? height,
BoxFit? fit,
Alignment? alignment,
bool? addRepaintBoundary,
FilterQuality? filterQuality,
void Function(String)? onWarning,
LottieDecoder? decoder,
RenderCache? renderCache,
bool? backgroundLoading,
}) => LottieBuilder.asset(
path,
controller: controller,
frameRate: frameRate,
animate: animate,
reverse: reverse,
repeat: repeat,
delegates: delegates,
options: options,
imageProviderFactory: imageProviderFactory,
onLoaded: onLoaded,
key: key,
frameBuilder: frameBuilder,
errorBuilder: errorBuilder,
width: width,
height: height,
fit: fit,
alignment: alignment,
package: package,
addRepaintBoundary: addRepaintBoundary,
filterQuality: filterQuality,
onWarning: onWarning,
decoder: decoder,
renderCache: renderCache,
backgroundLoading: backgroundLoading,
);
}
Loading

0 comments on commit 55d808f

Please sign in to comment.