openpgp 0.9.2

  • Readme
  • Changelog
  • Example
  • Installing
  • 63

OpenPGP #

Library for use openPGP with support for android, ios, macos, linux, web and hover

Contents #

Usage #

import 'package:openpgp/key_options.dart';
import 'package:openpgp/key_pair.dart';
import 'package:openpgp/openpgp.dart';
import 'package:openpgp/options.dart';

var keyPair = await OpenPGP.generate(
      options: Options(
        name: 'test',
        comment: 'test',
        email: 'test@test.com',
        passphrase: "123456",
        keyOptions: KeyOptions(
            rsaBits: 2048,
            cipher: Cypher.aes128,
            compression: Compression.none,
            hash: Hash.sha256,
            compressionLevel: 0,
        ),
      ),
);


var encrypted = await OpenPGP.encrypt("text","[publicKey here]");

var decrypted = await OpenPGP.decrypt("text encrypted","[privateKey here]","[passphrase here]");

var signed = await OpenPGP.sign("text","[publicKey here]","[privateKey here]","[passphrase here]");

var verified = await OpenPGP.verify("text signed","text","[publicKey here]");

var encryptedSymmetric = await OpenPGP.encryptSymmetric("text","[passphrase here]");

var decryptedSymmetric = await OpenPGP.decryptSymmetric("text encrypted","[passphrase here]");

Setup #

Android #

ProGuard

Add this lines to android/app/proguard-rules.pro for proguard support

-keep class go.** { *; }
-keep class openpgp.** { *; }

iOS #

no additional setup required

Web #

add to you pubspec.yaml

assets:
  - packages/openpgp/web/assets/wasm_exec.js
  - packages/openpgp/web/assets/openpgp.wasm

ref: https://github.com/jerson/flutter-openpgp/blob/master/example/pubspec.yaml

and in you web/index.html

<script
  src="assets/packages/openpgp/web/assets/wasm_exec.js"
  type="application/javascript"
></script>

ref: https://github.com/jerson/flutter-openpgp/blob/master/example/web/index.html

Linux #

add to you linux/app_configuration.mk

EXTRA_LDFLAGS=-lopenpgp

ref: https://github.com/jerson/flutter-openpgp/blob/master/example/linux/app_configuration.mk

MacOS #

no additional setup required

Hover #

just update your plugins

hover plugins get

Example #

Inside example folder

cd example && flutter run

Native Code #

the native library is made in Golang and build with gomobile for faster performance

https://github.com/jerson/openpgp-mobile

0.9.2 #

  • Multikeys support for android and ios

0.9.1 #

  • Fixed web support

0.9.0 #

  • macOS support

0.8.5 #

  • Linux support

0.8.2 #

  • Better implementation registerWith for android, thanks to @irasekh3

0.8.1 #

  • Implemented registerWith for android

0.8.0 #

  • Web support

0.7.0 #

  • Single instance for ios

0.6.0 #

  • Now run on background on ios

0.5.0 #

  • Now run on background on android

0.4.0 #

  • Updated binary packages

0.3.0 #

  • Fixed ios include

0.2.0 #

  • Updated description

0.1.0 #

  • Fixed ios support

0.0.1 #

  • Initial release

example/lib/main.dart

import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:openpgp/key_options.dart';
import 'package:openpgp/key_pair.dart';
import 'package:openpgp/openpgp.dart';
import 'package:openpgp/options.dart';

const passphrase = 'test';

void main() {
  if (!kIsWeb && (Platform.isLinux || Platform.isWindows)) {
    debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
  }

  runApp(new MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final encryptController = TextEditingController();
  final encryptSymmetricController = TextEditingController();
  final signController = TextEditingController();

  KeyPair _defaultKeyPair;

  KeyPair _keyPair = KeyPair(
    privateKey: "",
    publicKey: "",
  );
  String _encrypted = "";
  String _decrypted = "";
  String _encryptedSymmetric = "";
  String _decryptedSymmetric = "";
  String _signed = "";
  bool _verified = false;

  @override
  void initState() {
    super.initState();
    initKeyPair();

    encryptController.text = "sample";
    encryptSymmetricController.text = "sample";
    signController.text = "sample";
  }

  Future<void> initKeyPair() async {
    var keyPair = await OpenPGP.generate(
      options: Options(
        name: 'test',
        email: 'test@test.com',
        passphrase: passphrase,
        keyOptions: KeyOptions(
          rsaBits: 1024,
        ),
      ),
    );

    setState(() {
      _defaultKeyPair = keyPair;
    });
  }

  @override
  void dispose() {
    encryptController.dispose();
    encryptSymmetricController.dispose();
    signController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    if (_defaultKeyPair == null) {
      return Container();
    }

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('OpenPGP example app'),
        ),
        body: ListView(
          children: <Widget>[
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      TextField(
                        decoration: InputDecoration(labelText: "Message"),
                        controller: encryptController,
                      ),
                      RaisedButton(
                        child: Text("Encrypt"),
                        onPressed: () async {
                          var encrypted = await OpenPGP.encrypt(
                            encryptController.text,
                            _defaultKeyPair.publicKey,
                          );
                          setState(() {
                            _encrypted = encrypted;
                          });
                        },
                      ),
                      SelectableText(_encrypted)
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      RaisedButton(
                        child: Text("Decrypt"),
                        onPressed: () async {
                          var decrypted = await OpenPGP.decrypt(
                            _encrypted,
                            _defaultKeyPair.privateKey,
                            passphrase,
                          );
                          setState(() {
                            _decrypted = decrypted;
                          });
                        },
                      ),
                      SelectableText(_decrypted)
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      TextField(
                        decoration: InputDecoration(labelText: "Message"),
                        controller: signController,
                      ),
                      RaisedButton(
                        child: Text("Sign"),
                        onPressed: () async {
                          var signed = await OpenPGP.sign(
                            signController.text,
                            _defaultKeyPair.publicKey,
                            _defaultKeyPair.privateKey,
                            passphrase,
                          );
                          setState(() {
                            _signed = signed;
                          });
                        },
                      ),
                      SelectableText(_signed)
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      RaisedButton(
                        child: Text("Verify"),
                        onPressed: () async {
                          var verified = await OpenPGP.verify(
                            _signed,
                            signController.text,
                            _defaultKeyPair.publicKey,
                          );
                          setState(() {
                            _verified = verified;
                          });
                        },
                      ),
                      SelectableText(_verified ? "VALID" : "INVALID")
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      TextField(
                        decoration: InputDecoration(labelText: "Message"),
                        controller: encryptSymmetricController,
                      ),
                      RaisedButton(
                        child: Text("Encrypt Symmetric"),
                        onPressed: () async {
                          var encrypted = await OpenPGP.encryptSymmetric(
                            encryptSymmetricController.text,
                            passphrase,
                          );
                          setState(() {
                            _encryptedSymmetric = encrypted;
                          });
                        },
                      ),
                      SelectableText(_encryptedSymmetric)
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      RaisedButton(
                        child: Text("Decrypt Symmetric"),
                        onPressed: () async {
                          var decrypted = await OpenPGP.decryptSymmetric(
                            _encryptedSymmetric,
                            passphrase,
                          );
                          setState(() {
                            _decryptedSymmetric = decrypted;
                          });
                        },
                      ),
                      SelectableText(_decryptedSymmetric)
                    ],
                  ),
                ),
              ),
            ),
            Container(
              padding: const EdgeInsets.all(20),
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(20.0),
                  child: Column(
                    children: <Widget>[
                      RaisedButton(
                        child: Text("Generate"),
                        onPressed: () async {
                          var keyPair = await OpenPGP.generate(
                            options: Options(
                              name: 'test',
                              email: 'test@test.com',
                              passphrase: 'test',
                              keyOptions: KeyOptions(
                                rsaBits: 2048,
                              ),
                            ),
                          );
                          setState(() {
                            _keyPair = keyPair;
                          });
                        },
                      ),
                      SelectableText(_keyPair.publicKey),
                      SelectableText(_keyPair.privateKey)
                    ],
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  openpgp: ^0.9.2

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:openpgp/openpgp.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
32
Health:
Code health derived from static analysis. [more]
96
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
90
Overall:
Weighted score of the above. [more]
63
Learn more about scoring.

We analyzed this package on Apr 7, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health suggestions

Fix lib/web/js/openpgp.dart. (-3.45 points)

Analysis of lib/web/js/openpgp.dart reported 7 hints, including:

line 7 col 10: Name non-constant identifiers using lowerCamelCase.

line 15 col 10: Name non-constant identifiers using lowerCamelCase.

line 22 col 10: Name non-constant identifiers using lowerCamelCase.

line 31 col 10: Name non-constant identifiers using lowerCamelCase.

line 39 col 10: Name non-constant identifiers using lowerCamelCase.

Fix lib/web/js/promise.dart. (-0.50 points)

Analysis of lib/web/js/promise.dart reported 1 hint:

line 5 col 1: The @JS() annotation can only be used if it is also declared on the library directive.

Format lib/openpgp.dart.

Run flutter format to format lib/openpgp.dart.

Maintenance issues and suggestions

Make sure dartdoc successfully runs on your package's source files. (-10 points)

exitCode: 255 stdout: parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/openpgp.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/key_options.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/openpgp.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/wasm.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/go.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/promise.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/openpgp_web.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/options.dart... parsing /tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/key_pair.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/collection/collection.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/developer/developer.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/internal/internal.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/_interceptors/interceptors.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/io/io.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/isolate/isolate.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/convert/convert.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/async/async.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/typed_data/typed_data.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/_empty.dart... parsing /flutter/bin/cache/pkg/sky_engine/lib/js_util/js_util_dart2js.dart... [...] parsing /flutter/packages/flutter/lib/src/material/stepper.dart... parsing /flutter/packages/flutter/lib/src/material/switch.dart... parsing /flutter/packages/flutter/lib/src/material/switch_list_tile.dart... parsing /flutter/packages/flutter/lib/src/material/text_form_field.dart... parsing /flutter/packages/flutter/lib/src/material/time_picker.dart... parsing /flutter/packages/flutter/lib/src/material/toggle_buttons.dart... parsing /flutter/packages/flutter/lib/src/material/user_accounts_drawer_header.dart... Initialized dartdoc with 162 libraries in 94.5 seconds documenting openpgp Generating docs for library go from package:openpgp/web/js/go.dart... Generating docs for library key_options from package:openpgp/key_options.dart... Generating docs for library key_pair from package:openpgp/key_pair.dart... Generating docs for library openpgp from package:openpgp/openpgp.dart... Generating docs for library openpgp from package:openpgp/web/js/openpgp.dart... Generating docs for library openpgp_web from package:openpgp/web/openpgp_web.dart... Generating docs for library options from package:openpgp/options.dart... Generating docs for library promise from package:openpgp/web/js/promise.dart... Generating docs for library wasm from package:openpgp/web/js/wasm.dart... Validating docs... Documented 9 public libraries in 9.8 seconds stderr: Documenting openpgp... warning: private API of package:Dart is reexported by libraries in other packages: from E: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/collections.dart:13:28) referred to by collection: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: private API of package:Dart is reexported by libraries in other packages: from K: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/maps.dart:374:27) referred to by collection: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: private API of package:Dart is reexported by libraries in other packages: from V: (file:///flutter/bin/cache/pkg/sky_engine/lib/collection/maps.dart:374:30) referred to by collection: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/collection.dart:1:1) referred to by dart.pkg.collection.wrappers: (file:///tmp/pub-cache-dirPZSTFS/hosted/pub.dartlang.org/collection-1.14.11/lib/wrappers.dart:7:9) warning: ambiguous reexport of dart-ui.hashList, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.hashList: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/hash_codes.dart:114:5) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) Use {@canonicalFor dart:ui.hashList} in the desired library's documentation to resolve the ambiguity and/or override dartdoc's decision, or structure your package so the reexport is less ambiguous. The symbol will still be referenced in all candidates -- this only controls the location where it will be written and which library will be displayed in navigation for the relevant pages. The flag --ambiguous-reexport-scorer-min-confidence allows you to set the threshold at which this warning will appear. warning: ambiguous reexport of dart-ui.hashValues, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.hashValues: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/hash_codes.dart:42:5) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.VoidCallback, canonicalization candidates: (cupertino, foundation, material, painting, rendering, scheduler, widgets) -> widgets (confidence 0.000) from dart-ui.VoidCallback: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:8:9) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) foundation: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) scheduler: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.AccessibilityFeatures, canonicalization candidates: (rendering, semantics) -> semantics (confidence 0.000) from dart-ui.AccessibilityFeatures: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:1208:7) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) semantics: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.FontWeight, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.FontWeight: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:17:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Locale, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Locale: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:248:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Offset, canonicalization candidates: (cupertino, gestures, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Offset: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:119:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) gestures: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Radius, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Radius: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:895:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Rect, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Rect: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:621:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.RRect, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.RRect: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:1018:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.RSTransform, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.RSTransform: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:1645:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Size, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.Size: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/geometry.dart:347:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextBox, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextBox: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1220:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDecoration, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDecoration: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:358:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextPosition, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextPosition: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1364:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextRange, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextRange: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1410:7) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.AppLifecycleState, canonicalization candidates: (cupertino, material, scheduler, widgets) -> widgets (confidence 0.000) from dart-ui.AppLifecycleState: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:154:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) scheduler: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.Brightness, canonicalization candidates: (cupertino, material, services) -> services (confidence 0.000) from dart-ui.Brightness: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/window.dart:1272:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.FontStyle, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.FontStyle: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:8:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.PlaceholderAlignment, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.PlaceholderAlignment: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1619:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextAffinity, canonicalization candidates: (cupertino, material, painting, rendering, services, widgets) -> widgets (confidence 0.000) from dart-ui.TextAffinity: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1322:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) services: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextAlign, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextAlign: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:317:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextBaseline, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextBaseline: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:349:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDecorationStyle, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDecorationStyle: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:417:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: ambiguous reexport of dart-ui.TextDirection, canonicalization candidates: (cupertino, material, painting, rendering, widgets) -> widgets (confidence 0.000) from dart-ui.TextDirection: (file:///flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart:1208:6) cupertino: 1.010 - embeds package name (+1.000), name is long (+0.01000) material: 1.010 - embeds package name (+1.000), name is long (+0.01000) painting: 1.010 - embeds package name (+1.000), name is long (+0.01000) rendering: 1.010 - embeds package name (+1.000), name is long (+0.01000) widgets: 1.010 - embeds package name (+1.000), name is long (+0.01000) warning: go has no library level documentation comments, from go: (file:///tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/go.dart:2:9) warning: no canonical library found for go.Go.hashCode, not linking, from go.Go.hashCode: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:94:20) warning: no canonical library found for go.Go.runtimeType, not linking, from go.Go.runtimeType: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:116:21) warning: no canonical library found for go.Go.noSuchMethod, not linking, from go.Go.noSuchMethod: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:111:20) warning: no canonical library found for go.Go.toString, not linking, from go.Go.toString: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:99:19) warning: no canonical library found for go.Go.==, not linking, from go.Go.==: (file:///flutter/bin/cache/pkg/sky_engine/lib/core/object.dart:62:26) warning: openpgp has no library level documentation comments, from openpgp: (file:///tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/openpgp.dart:2:9) error: failed to write file at: openpgp/openpgp-library.html for symbol openpgp: (file:///tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/openpgp.dart:2:9) conflicting with file already generated by openpgp: (file:///tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/openpgp.dart:1:1) Dartdoc generates a path and filename to write to for each symbol. openpgp conflicts with another symbol in the generated path, and therefore can not be written out. Changing the name, library name, or class name (if appropriate) of one of the conflicting items can resolve the conflict. Alternatively, use the @nodoc tag in one symbol's documentation comments to hide it. warning: wasm has no library level documentation comments, from wasm: (file:///tmp/pub-dartlang-dartdocRASVQZ/pkg/lib/web/js/wasm.dart:2:9) warning: dartdoc generated a broken link to: openpgp/OpenPGP-class.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/OpenPGP.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/decrypt.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/decryptSymmetric.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/encrypt.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/encryptSymmetric.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/generate.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/sign.html (from index.json) warning: dartdoc generated a broken link to: openpgp/OpenPGP/verify.html (from index.json) found 45 warnings and 1 error Unhandled exception: dartdoc encountered 1 errors while processing. #0 Dartdoc.generateDocs (package:dartdoc/dartdoc.dart:202:7)

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
flutter_web_plugins 0.0.0
js ^0.6.0 0.6.1+1
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test