From ad79c6180503002535a0306b70be5a2b05d8c262 Mon Sep 17 00:00:00 2001 From: faithoflifedev Date: Thu, 29 Aug 2024 20:39:31 -0400 Subject: [PATCH] improvements --- melos.yaml | 14 +- packages/google_vision/pubspec.yaml | 2 +- packages/google_vision/tool/README.md | 5 +- .../example/assets/dj.jpg | Bin 0 -> 121964 bytes .../example/lib/main.dart | 8 + .../example/lib/multiple_detections.dart | 12 +- .../example/lib/multiple_face_detections.dart | 220 ++++++++++++++++++ .../example/pubspec.yaml | 2 + .../lib/google_vision_flutter.dart | 1 - .../lib/src/google_vision.dart | 2 +- .../lib/src/google_vision_builder.dart | 75 +++--- .../lib/src/google_vision_builder_base.dart | 63 +++-- .../lib/src/google_vision_file_builder.dart | 80 +++---- .../src/google_vision_future_resolver.dart | 112 --------- .../lib/src/google_vision_image_builder.dart | 79 +++---- packages/google_vision_flutter/pubspec.yaml | 2 +- 16 files changed, 405 insertions(+), 272 deletions(-) create mode 100644 packages/google_vision_flutter/example/assets/dj.jpg create mode 100644 packages/google_vision_flutter/example/lib/multiple_face_detections.dart delete mode 100644 packages/google_vision_flutter/lib/src/google_vision_future_resolver.dart diff --git a/melos.yaml b/melos.yaml index 7669dab..0b210e7 100644 --- a/melos.yaml +++ b/melos.yaml @@ -22,13 +22,13 @@ scripts: # run: melos run publish:dart && melos run publish:flutter # description: Run publish for all packages. - prep:dart: - run: melos run build && melos run meta && melos run markdown && melos run analyze && melos run format - description: Run prep steps dart. + prep: + run: melos run build && melos run meta && melos run markdown && melos run format && melos run analyze + description: Run prep steps for dart and flutter. - prep:flutter: - run: melos run build && melos run meta && melos run markdown && melos run analyze && melos run format - description: Run prep steps Flutter. + # prep:flutter: + # run: melos run build && melos run meta && melos run markdown && melos run analyze && melos run format + # description: Run prep steps Flutter. ## TODO: Add commit steps for Dart and Flutter packages. @@ -66,7 +66,7 @@ scripts: depends-on: build_runner analyze: - exec: dart analyze --fatal-infos . + exec: dart analyze . description: Run `dart analyze` in all packages. format: diff --git a/packages/google_vision/pubspec.yaml b/packages/google_vision/pubspec.yaml index caf675c..431f6a1 100644 --- a/packages/google_vision/pubspec.yaml +++ b/packages/google_vision/pubspec.yaml @@ -1,6 +1,6 @@ name: google_vision description: Allows you to add Google Visions image labeling, face, logo, and landmark detection, OCR, and detection of explicit content, into cross platform applications. -version: 1.3.0+3 +version: 1.3.0+4 repository: https://github.com/faithoflifedev/google_vision homepage: https://github.com/faithoflifedev/google_vision/tree/main/packages/google_vision diff --git a/packages/google_vision/tool/README.md b/packages/google_vision/tool/README.md index 5c93726..9a34b12 100644 --- a/packages/google_vision/tool/README.md +++ b/packages/google_vision/tool/README.md @@ -1,5 +1,9 @@ # Google Vision Images REST API Client + +[![pub package](https://img.shields.io/pub/v/google_vision.svg)](https://pub.dartlang.org/packages/google_vision) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + Native [Dart](https://dart.dev/) package that integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications. - [Google Vision Images REST API Client](#google-vision-images-rest-api-client) @@ -21,7 +25,6 @@ Native [Dart](https://dart.dev/) package that integrates Google Vision features, ## Project Status -[![pub package](https://img.shields.io/pub/v/google_vision.svg)](https://pub.dartlang.org/packages/google_vision) [![Build Status](https://github.com/faithoflifedev/google_vision/workflows/Dart/badge.svg)](https://github.com/faithoflifedev/google_vision/actions) [![github last commit](https://shields.io/github/last-commit/faithoflifedev/google_vision)](https://shields.io/github/last-commit/faithoflifedev/google_vision) [![github build](https://img.shields.io/github/actions/workflow/status/faithoflifedev/google_vision_workspace/dart.yaml?branch=main)](https://shields.io/github/workflow/status/faithoflifedev/google_vision/Dart) [![github issues](https://shields.io/github/issues/faithoflifedev/google_vision)](https://shields.io/github/issues/faithoflifedev/google_vision) diff --git a/packages/google_vision_flutter/example/assets/dj.jpg b/packages/google_vision_flutter/example/assets/dj.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f50e8a635c723517cdfb7e520ac3efee37b3c9d6 GIT binary patch literal 121964 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 x}3U}}o3ungS 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%0DG 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 literal 0 HcmV?d00001 diff --git a/packages/google_vision_flutter/example/lib/main.dart b/packages/google_vision_flutter/example/lib/main.dart index 5b85c60..6608406 100644 --- a/packages/google_vision_flutter/example/lib/main.dart +++ b/packages/google_vision_flutter/example/lib/main.dart @@ -9,6 +9,7 @@ import 'label_detection.dart'; import 'landmark_detection.dart'; import 'logo_detection.dart'; import 'multiple_detections.dart'; +import 'multiple_face_detections.dart'; import 'object_localization.dart'; import 'safe_search_detection.dart'; import 'text_detection.dart'; @@ -66,6 +67,9 @@ class MyApp extends StatelessWidget { '/webdetection': (context) => const WebDetection( title: 'Document Text Detection from PDF', ), + '/multipleface': (context) => const MultipleFaceDetection( + title: 'Multiple Image Face Detection', + ), }, ); } @@ -140,6 +144,10 @@ class MenuScreen extends StatelessWidget { child: const Text('Web Detection'), onPressed: () => Navigator.pushNamed(context, '/webdetection'), ), + ElevatedButton( + child: const Text('Multiple Image Face Detection'), + onPressed: () => Navigator.pushNamed(context, '/multipleface'), + ), const SizedBox( height: 30, child: Text('File Functions'), diff --git a/packages/google_vision_flutter/example/lib/multiple_detections.dart b/packages/google_vision_flutter/example/lib/multiple_detections.dart index 508bf80..cb0bc4c 100644 --- a/packages/google_vision_flutter/example/lib/multiple_detections.dart +++ b/packages/google_vision_flutter/example/lib/multiple_detections.dart @@ -11,8 +11,10 @@ class MultipleDetections extends StatefulWidget { } class _MyHomePageState extends State { + static const assetName = 'assets/young-man-smiling.jpg'; + final _processImage = Image.asset( - 'assets/young-man-smiling.jpg', // 'assets/logo.png', // 'assets/young-man-smiling.jpg' + assetName, fit: BoxFit.fitWidth, width: 300, ); @@ -34,7 +36,7 @@ class _MyHomePageState extends State { children: [ const Padding( padding: EdgeInsets.all(8.0), - child: Text('assets/young-man-smiling'), + child: Text(assetName), ), const Padding( padding: EdgeInsets.all(8.0), @@ -62,13 +64,11 @@ class _MyHomePageState extends State { features: [ Feature( maxResults: 10, - type: AnnotationType - .faceDetection, // 'LOGO_DETECTION', // 'FACE_DETECTION' + type: AnnotationType.faceDetection, ), Feature( maxResults: 10, - type: AnnotationType - .objectLocalization, // 'LOGO_DETECTION', // 'FACE_DETECTION' + type: AnnotationType.objectLocalization, ), ], builder: ( diff --git a/packages/google_vision_flutter/example/lib/multiple_face_detections.dart b/packages/google_vision_flutter/example/lib/multiple_face_detections.dart new file mode 100644 index 0000000..a937613 --- /dev/null +++ b/packages/google_vision_flutter/example/lib/multiple_face_detections.dart @@ -0,0 +1,220 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:google_vision/google_vision.dart' as gv; +import 'package:google_vision_flutter/google_vision_flutter.dart'; + +class MultipleFaceDetection extends StatefulWidget { + const MultipleFaceDetection({super.key, required this.title}); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + FutureOr? _googleVision; + + static const assetName1 = 'assets/young-man-smiling.jpg'; + + static const assetName2 = 'assets/dj.jpg'; + + final _processImage1 = Image.asset( + assetName1, + fit: BoxFit.fitWidth, + height: 300, + ); + + final _processImage2 = Image.asset( + assetName2, + fit: BoxFit.fitWidth, + height: 300, + ); + + @override + void initState() { + super.initState(); + + WidgetsBinding.instance.addPostFrameCallback((_) { + _getGoogleVision(); + }); + } + + FutureOr _getGoogleVision() async { + _googleVision ??= await GoogleVision.withAsset( + 'assets/service_credentials.json', + ); + + setState(() {}); + } + + @override + Widget build(BuildContext context) => SafeArea( + child: Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.black), + onPressed: () => Navigator.of(context).pop(), + ), + title: Text(widget.title), + ), + body: SingleChildScrollView( + child: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Column(children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text(assetName1), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: _processImage1, + ), + ]), + Column(children: [ + const Padding( + padding: EdgeInsets.all(8.0), + child: Text(assetName2), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: _processImage2, + ), + ]), + ], + ), + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + 'Processed images will appear below:', + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: _googleVision == null + ? const CircularProgressIndicator() + : GoogleVisionImageBuilder.faceDetection( + googleVision: _googleVision!, + imageProvider: _processImage1.image, + builder: ( + BuildContext context, + List? faceAnnotations, + ) => + CustomPaint( + foregroundPainter: AnnotationPainter( + faceAnnotations: faceAnnotations, + ), + child: Image(image: _processImage1.image), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: _googleVision == null + ? const CircularProgressIndicator() + : GoogleVisionImageBuilder.faceDetection( + googleVision: Future.value(_googleVision), + imageProvider: _processImage2.image, + builder: ( + BuildContext context, + List? faceAnnotations, + ) => + CustomPaint( + foregroundPainter: AnnotationPainter( + faceAnnotations: faceAnnotations, + ), + child: Image(image: _processImage2.image), + ), + ), + ) + ], + ), + ), + ), + ), + ); +} + +class AnnotationPainter extends CustomPainter { + final List? faceAnnotations; + + AnnotationPainter({ + required this.faceAnnotations, + }); + + @override + void paint( + Canvas canvas, + Size size, + ) { + // face detection + for (var faceAnnotation in faceAnnotations!) { + drawAnnotationsRect( + vertices: faceAnnotation.boundingPoly.vertices, + canvas: canvas, + ); + + drawString( + text: 'Face - ${(faceAnnotation.detectionConfidence * 100).toInt()}%', + offset: faceAnnotation.boundingPoly.vertices.first.toOffset(), + canvas: canvas, + size: size, + ); + } + } + + void drawString({ + required String text, + required Offset offset, + required Canvas canvas, + required Size size, + Color? color, + }) { + color ??= Colors.red.shade900; + + final tp = TextPainter( + text: TextSpan( + text: text, + style: TextStyle(color: color), + ), + textAlign: TextAlign.left, + textDirection: TextDirection.ltr, + ); + + tp.layout(); + + tp.paint(canvas, offset); + } + + void drawAnnotationsRect({ + required List vertices, + required Canvas canvas, + Color? color, + double strokeWidth = 1, + }) { + color ??= Colors.red.shade400; + + final paint = Paint(); + + paint.style = PaintingStyle.stroke; + paint.strokeWidth = strokeWidth; + paint.color = color; + + canvas.drawRect( + Rect.fromPoints( + vertices.first.toOffset(), + vertices[2].toOffset(), + ), + paint, + ); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; +} diff --git a/packages/google_vision_flutter/example/pubspec.yaml b/packages/google_vision_flutter/example/pubspec.yaml index 7cce803..78fdc39 100644 --- a/packages/google_vision_flutter/example/pubspec.yaml +++ b/packages/google_vision_flutter/example/pubspec.yaml @@ -10,6 +10,7 @@ environment: dependencies: color: ^3.0.0 + google_vision: ^1.3.0+2 google_vision_flutter: path: ../ syncfusion_flutter_pdfviewer: ^26.2.11 @@ -28,6 +29,7 @@ flutter: - assets/allswell.pdf - assets/census2010.jpg - assets/cn_tower.jpg + - assets/dj.jpg # https://commons.wikimedia.org/wiki/Category:Images#/media/File:DJ_Kelblizz.jpg - assets/google_logo.jpg - assets/service_credentials.json - assets/setagaya_small.jpg diff --git a/packages/google_vision_flutter/lib/google_vision_flutter.dart b/packages/google_vision_flutter/lib/google_vision_flutter.dart index bcb147d..8e08289 100644 --- a/packages/google_vision_flutter/lib/google_vision_flutter.dart +++ b/packages/google_vision_flutter/lib/google_vision_flutter.dart @@ -6,7 +6,6 @@ export 'src/google_vision.dart'; export 'src/google_vision_builder_base.dart'; export 'src/google_vision_builder.dart'; export 'src/google_vision_file_builder.dart'; -export 'src/google_vision_future_resolver.dart'; export 'src/google_vision_image_builder.dart'; export 'src/image_detail.dart'; export 'src/input_config.dart'; diff --git a/packages/google_vision_flutter/lib/src/google_vision.dart b/packages/google_vision_flutter/lib/src/google_vision.dart index d2d2155..b35298a 100644 --- a/packages/google_vision_flutter/lib/src/google_vision.dart +++ b/packages/google_vision_flutter/lib/src/google_vision.dart @@ -12,6 +12,6 @@ class GoogleVision extends gv.GoogleVision { } /// Create a new instance of [GoogleVision] with the given [apiKey]. - static Future withApiKey(String apiKey) async => + static gv.GoogleVision withApiKey(String apiKey) => gv.GoogleVision.withApiKey(apiKey); } diff --git a/packages/google_vision_flutter/lib/src/google_vision_builder.dart b/packages/google_vision_flutter/lib/src/google_vision_builder.dart index 7dc07f2..da81da4 100644 --- a/packages/google_vision_flutter/lib/src/google_vision_builder.dart +++ b/packages/google_vision_flutter/lib/src/google_vision_builder.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_image_converter/flutter_image_converter.dart'; import 'package:google_vision/google_vision.dart' as gv; import 'package:google_vision_flutter/google_vision_flutter.dart' hide GoogleVision, JsonImage, InputConfig; @@ -16,7 +17,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder; /// Creates a new instance of [GoogleVisionBuilder]. - GoogleVisionBuilder({ + const GoogleVisionBuilder({ super.key, required super.googleVision, required this.imageProvider, @@ -24,6 +25,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { required this.builder, super.onError, super.onLoading, + super.parent, int maxResults = 10, }); @@ -38,6 +40,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -66,6 +69,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -94,6 +98,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -122,6 +127,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -150,6 +156,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -178,6 +185,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -206,6 +214,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -234,6 +243,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -262,6 +272,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -290,6 +301,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -318,6 +330,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -346,6 +359,7 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { ) builder, Widget Function(Object)? onError, Widget Function()? onLoading, + String? parent, int maxResults = 10, }) => GoogleVisionBuilder( @@ -363,46 +377,29 @@ class GoogleVisionBuilder extends GoogleVisionBuilderBase { AnnotationType.webDetection, maxResults), ); - /// Builds the widget. - @override - Widget build(BuildContext context) { - final googleVisionFutureResolver = GoogleVisionFutureResolver( - googleVisionFuture: googleVision, - imageProvider: imageProvider, - ); - - return FutureBuilder( - future: googleVisionFutureResolver.resolve( - (byteBuffer) => AnnotationRequests( - requests: [ - AnnotationRequest( - jsonImage: gv.JsonImage(byteBuffer: byteBuffer), - features: features, - ) - ], - ), - ), - builder: ( - context, - snapshot, - ) { - Widget? widget = onLoading == null - ? const Center(child: CircularProgressIndicator()) - : onLoading!(); + Future _annotatedResponses() async { + final googleVision = await this.googleVision; - if (snapshot.hasData) { - widget = builder( - context, - snapshot, - ); - } else if (snapshot.hasError) { - widget = onError == null - ? onError!(snapshot.error!) - : Center(child: Text('${snapshot.error}')); - } + final byteData = await imageProvider.pngByteData; - return widget; - }, + return googleVision.annotate( + requests: AnnotationRequests( + requests: [ + AnnotationRequest( + jsonImage: gv.JsonImage(byteBuffer: byteData.buffer), + features: features, + ) + ], + ), + parent: parent, ); } + + /// Builds the widget. + @override + Widget build(BuildContext context) => getBuild( + context, + _annotatedResponses(), + builder, + ); } diff --git a/packages/google_vision_flutter/lib/src/google_vision_builder_base.dart b/packages/google_vision_flutter/lib/src/google_vision_builder_base.dart index 36d7a4c..143305b 100644 --- a/packages/google_vision_flutter/lib/src/google_vision_builder_base.dart +++ b/packages/google_vision_flutter/lib/src/google_vision_builder_base.dart @@ -1,9 +1,11 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:google_vision/google_vision.dart' as gv; import 'package:google_vision_flutter/google_vision_flutter.dart'; abstract class GoogleVisionBuilderBase extends StatelessWidget { - final Future googleVision; + final FutureOr googleVision; /// The error builder for the [GoogleVisionFileBuilder]. final Widget Function(Object error)? onError; @@ -14,26 +16,26 @@ abstract class GoogleVisionBuilderBase extends StatelessWidget { /// The list of [Feature] to be used for the image annotation. final List features; - static GoogleVisionFutureResolver? _googleVisionFutureResolver; - - GoogleVisionFutureResolver get googleVisionResolver => - _googleVisionFutureResolver == null - ? throw Exception( - 'GoogleVisionFutureResolver has not been initialized properly.') - : _googleVisionFutureResolver!; + /// Optional. Target project and location to make a call. + /// + /// Format: projects/{project-id}/locations/{location-id}. + /// + /// If no parent is specified, a region will be chosen automatically. + /// + /// Supported location-ids: us: USA country only, eu: The European Union. + /// + /// Example: projects/project-A/locations/eu. + final String? parent; /// Creates a new instance of [GoogleVisionBuilderBase]. - GoogleVisionBuilderBase({ + const GoogleVisionBuilderBase({ super.key, this.onError, this.onLoading, required this.googleVision, required this.features, - }) { - _googleVisionFutureResolver = GoogleVisionFutureResolver( - googleVisionFuture: googleVision, - ); - } + this.parent, + }); /// Gets the list of [Feature] for the specified [AnnotationType]. static List getFeatures( @@ -44,4 +46,37 @@ abstract class GoogleVisionBuilderBase extends StatelessWidget { type: annotationType, ) ]; + + Widget getBuild( + BuildContext context, + Future future, + Widget Function( + BuildContext context, + AsyncSnapshot snapshot, + ) builder, + ) => + FutureBuilder( + future: future, + builder: ( + context, + snapshot, + ) { + Widget? widget = onLoading == null + ? const Center(child: CircularProgressIndicator()) + : onLoading!(); + + if (snapshot.hasData) { + widget = builder( + context, + snapshot, + ); + } else if (snapshot.hasError) { + widget = onError == null + ? onError!(snapshot.error!) + : Center(child: Text('${snapshot.error}')); + } + + return widget; + }, + ); } diff --git a/packages/google_vision_flutter/lib/src/google_vision_file_builder.dart b/packages/google_vision_flutter/lib/src/google_vision_file_builder.dart index 266061d..a5a85cd 100644 --- a/packages/google_vision_flutter/lib/src/google_vision_file_builder.dart +++ b/packages/google_vision_flutter/lib/src/google_vision_file_builder.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:google_vision/google_vision.dart' as gv; import 'package:google_vision_flutter/google_vision_flutter.dart'; @@ -14,7 +16,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { ) builder; /// Creates a new instance of [GoogleVisionFileBuilder]. - GoogleVisionFileBuilder({ + const GoogleVisionFileBuilder({ super.key, required super.googleVision, required this.inputConfig, @@ -22,13 +24,14 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { required this.builder, super.onError, super.onLoading, + super.parent, int maxResults = 10, }); /// Creates a new instance of [GoogleVisionFileBuilder] for crop hint detections. factory GoogleVisionFileBuilder.cropHints({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -56,7 +59,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for document text detections. factory GoogleVisionFileBuilder.documentTextDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -84,7 +87,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for face detections. factory GoogleVisionFileBuilder.faceDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -112,7 +115,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for image properties detection. factory GoogleVisionFileBuilder.imageProperties({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -140,7 +143,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for label detections. factory GoogleVisionFileBuilder.labelDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -168,7 +171,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for landmark detections. factory GoogleVisionFileBuilder.landmarkDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -196,7 +199,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for logo detections. factory GoogleVisionFileBuilder.logoDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -224,7 +227,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for object localization detections. factory GoogleVisionFileBuilder.objectLocalization({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -252,7 +255,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for product search detections. factory GoogleVisionFileBuilder.productSearch({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -280,7 +283,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for safe search detections. factory GoogleVisionFileBuilder.safeSearchDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -308,7 +311,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for text detections. factory GoogleVisionFileBuilder.textDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -338,7 +341,7 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionFileBuilder] for web detections. factory GoogleVisionFileBuilder.webDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required Future inputConfig, required Widget Function( BuildContext, @@ -363,40 +366,27 @@ class GoogleVisionFileBuilder extends GoogleVisionBuilderBase { AnnotationType.webDetection, maxResults), ); - /// Builds the widget. - @override - Widget build(BuildContext context) { - final googleVisionFutureResolver = GoogleVisionFutureResolver( - googleVisionFuture: googleVision, - inputConfigFuture: inputConfig, - ); - - return FutureBuilder( - future: googleVisionFutureResolver.resolveFile((inputConfig) => [ - AnnotateFileRequest( - inputConfig: inputConfig, - features: features, - ) - ]), - builder: (BuildContext context, - AsyncSnapshot snapshot) { - Widget? widget = onLoading == null - ? const Center(child: CircularProgressIndicator()) - : onLoading!(); + Future _batchAnnotateFilesResponse() async { + final googleVision = await this.googleVision; - if (snapshot.hasData) { - widget = builder( - context, - snapshot, - ); - } else if (snapshot.hasError) { - widget = onError == null - ? onError!(snapshot.error!) - : Center(child: Text('${snapshot.error}')); - } + final inputConfig = await this.inputConfig; - return widget; - }, + return googleVision.file.annotate( + requests: [ + AnnotateFileRequest( + inputConfig: inputConfig, + features: features, + ) + ], + parent: parent, ); } + + /// Builds the widget. + @override + Widget build(BuildContext context) => getBuild( + context, + _batchAnnotateFilesResponse(), + builder, + ); } diff --git a/packages/google_vision_flutter/lib/src/google_vision_future_resolver.dart b/packages/google_vision_flutter/lib/src/google_vision_future_resolver.dart deleted file mode 100644 index 7913db5..0000000 --- a/packages/google_vision_flutter/lib/src/google_vision_future_resolver.dart +++ /dev/null @@ -1,112 +0,0 @@ -import 'dart:typed_data'; - -import 'package:flutter/material.dart'; -import 'package:flutter_image_converter/flutter_image_converter.dart'; -import 'package:google_vision/google_vision.dart' as gv; -import 'package:google_vision_flutter/google_vision_flutter.dart'; - -/// this class is used to remove the use of nested FutureBuilders. It resolves -/// the [GoogleVision] authentication future and the [InputConfig] or -/// [ImageProvider] future, allowing the final GoogleVision API call to be -/// provided as the final future as would be expected by the user. -class GoogleVisionFutureResolver { - /// The final [GoogleVision] object that is resolved from the [googleVisionFuture]. - late final gv.GoogleVision? _googleVision; - - /// The future that resolves the [GoogleVision] object. - final Future googleVisionFuture; - - /// The [ImageProvider] that is used to provide the image data for the API - /// call. - final ImageProvider? imageProvider; - - /// The future that resolves the [InputConfig] object. - final Future? inputConfigFuture; - - /// Error message for when the [GoogleVision] object has not been initialized - /// properly. - static const inputConfigError = - 'InputConfig has not been initialized properly.'; - - /// Error message for when the [ImageProvider] object has not been initialized - /// properly. - static const imageProviderError = - 'ImageProvider has not been initialized properly.'; - - gv.GoogleVision get googleVision => - _googleVision ?? - (throw Exception('GoogleVision has not been initialized properly.')); - - /// Constructor for the [GoogleVisionFutureResolver] class. - GoogleVisionFutureResolver({ - required this.googleVisionFuture, - this.imageProvider, - this.inputConfigFuture, - }); - - @Deprecated('Use resolveImage instead') - - /// Resolves the [GoogleVision] object and the [ImageProvider] object for use - /// by the FutureBuilder. - Future resolve( - AnnotationRequests Function(ByteBuffer?) requestFunction, { - String? parent, - }) async { - _googleVision = await googleVisionFuture; - - if (imageProvider == null) { - throw Exception(imageProviderError); - } - - final byteData = await imageProvider!.pngByteData; - - return googleVision.annotate( - requests: requestFunction(byteData.buffer), - parent: parent, - ); - } - - /// Resolves the [GoogleVision] object and the [ImageProvider] object for use - /// by the FutureBuilder. - Future resolveImage( - List Function(ByteBuffer?) requestFunction, { - String? parent, - }) async { - _googleVision = await googleVisionFuture; - - if (imageProvider == null) { - throw Exception(imageProviderError); - } - - final byteData = await imageProvider!.pngByteData; - - return googleVision.image.annotate( - requests: requestFunction(byteData.buffer), - parent: parent, - ); - } - - /// Resolves the [GoogleVision] object and the [InputConfig] object for use by - /// the FutureBuilder. - Future resolveFile( - List Function(InputConfig) requestFunction, { - String? parent, - }) async { - _googleVision = await googleVisionFuture; - - if (inputConfigFuture == null) { - throw Exception(inputConfigError); - } - - final inputConfig = await inputConfigFuture; - - if (inputConfig == null) { - throw Exception(inputConfigError); - } - - return googleVision.file.annotate( - requests: requestFunction(inputConfig), - parent: parent, - ); - } -} diff --git a/packages/google_vision_flutter/lib/src/google_vision_image_builder.dart b/packages/google_vision_flutter/lib/src/google_vision_image_builder.dart index e75e00f..76cd85e 100644 --- a/packages/google_vision_flutter/lib/src/google_vision_image_builder.dart +++ b/packages/google_vision_flutter/lib/src/google_vision_image_builder.dart @@ -1,4 +1,7 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; +import 'package:flutter_image_converter/flutter_image_converter.dart'; import 'package:google_vision/google_vision.dart' as gv; import 'package:google_vision_flutter/google_vision_flutter.dart' hide GoogleVision, JsonImage; @@ -15,7 +18,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { ) builder; /// Creates a new instance of [GoogleVisionImageBuilder]. - GoogleVisionImageBuilder({ + const GoogleVisionImageBuilder({ super.key, required super.googleVision, required this.imageProvider, @@ -29,7 +32,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for crop hint detections. factory GoogleVisionImageBuilder.cropHints({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -57,7 +60,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for document text detections. factory GoogleVisionImageBuilder.documentTextDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -85,7 +88,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for face detections. factory GoogleVisionImageBuilder.faceDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -113,7 +116,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for image properties detection. factory GoogleVisionImageBuilder.imageProperties({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -141,7 +144,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for label detections. factory GoogleVisionImageBuilder.labelDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -169,7 +172,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for landmark detections. factory GoogleVisionImageBuilder.landmarkDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -197,7 +200,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for logo detections. factory GoogleVisionImageBuilder.logoDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -225,7 +228,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for object localization detections. factory GoogleVisionImageBuilder.objectLocalization({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -253,7 +256,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for product search detections. factory GoogleVisionImageBuilder.productSearch({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -281,7 +284,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for safe search detections. factory GoogleVisionImageBuilder.safeSearchDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -309,7 +312,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for text detections. factory GoogleVisionImageBuilder.textDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -337,7 +340,7 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { /// Creates a new instance of [GoogleVisionImageBuilder] for web detections. factory GoogleVisionImageBuilder.webDetection({ Key? key, - required Future googleVision, + required FutureOr googleVision, required ImageProvider imageProvider, required Widget Function( BuildContext, @@ -362,39 +365,27 @@ class GoogleVisionImageBuilder extends GoogleVisionBuilderBase { AnnotationType.webDetection, maxResults), ); - /// Builds the widget. - @override - Widget build(BuildContext context) { - final googleVisionFutureResolver = GoogleVisionFutureResolver( - googleVisionFuture: googleVision, - imageProvider: imageProvider, - ); - - return FutureBuilder( - future: googleVisionFutureResolver.resolveImage((byteBuffer) => [ - AnnotateImageRequest( - jsonImage: gv.JsonImage(byteBuffer: byteBuffer), - features: features) - ]), - builder: (BuildContext context, - AsyncSnapshot snapshot) { - Widget? widget = onLoading == null - ? const Center(child: CircularProgressIndicator()) - : onLoading!(); + Future _batchAnnotateImagesResponse() async { + final googleVision = await this.googleVision; - if (snapshot.hasData) { - widget = builder( - context, - snapshot, - ); - } else if (snapshot.hasError) { - widget = onError == null - ? onError!(snapshot.error!) - : Center(child: Text('${snapshot.error}')); - } + final byteData = await imageProvider.pngByteData; - return widget; - }, + return googleVision.image.annotate( + requests: [ + AnnotateImageRequest( + jsonImage: gv.JsonImage(byteBuffer: byteData.buffer), + features: features, + ) + ], + parent: parent, ); } + + /// Builds the widget. + @override + Widget build(BuildContext context) => getBuild( + context, + _batchAnnotateImagesResponse(), + builder, + ); } diff --git a/packages/google_vision_flutter/pubspec.yaml b/packages/google_vision_flutter/pubspec.yaml index b378d94..5c477eb 100644 --- a/packages/google_vision_flutter/pubspec.yaml +++ b/packages/google_vision_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: google_vision_flutter description: Add Google Visions image labeling, face, logo, and landmark detection into your Flutter applications. -version: 1.3.0+3 +version: 1.3.0+4 repository: https://github.com/faithoflifedev/google_vision homepage: https://github.com/faithoflifedev/google_vision/tree/main/packages/google_vision_flutter