amberflutter
A Flutter wrapper for Amber (Nostr Signer).
Rationale
Provide a bridge between your app and Amber, to enable app developers to easily use the functionality provided by Amber.
Installation
With flutter:
flutter pub add amberflutter
Or add to your pubspec.yaml
:
dependencies:
amberflutter: ^0.0.1
Usage
Documentation is taken from Amber Docs. Please refer to them if you have any question about how to use Amber.
Import in your code
import 'package:amberflutter/amberflutter.dart';
Get Public Key
Get the current user public key (npub). This request also allows to send permissions so the user can approve them forever. See the Amber Docs for the list of available permissions.
final amber = Amberflutter();
amber.getPublicKey(
permissions: [
Permission(
type: "sign_event",
),
],
).then((value) {
print("npub: ${value['signature']}");
});
Sign Event
final amber = Amberflutter();
final eventJson = jsonEncode({
'id': '',
'pubkey': Nip19.decodePubkey(_npub),
'kind': 1,
'content': 'Hello from Amber Flutter!',
'created_at':
(DateTime.now().millisecondsSinceEpoch / 1000).round(),
'tags': [],
'sig': '',
});
amber.signEvent(
currentUser: "<your_npub_here>",
eventJson: eventJson,
).then((value) {
print("signed event: ${value['event']}");
});
Nip 04 Encrypt
final amber = Amberflutter();
amber.nip04Encrypt(
plaintext: "Hello from Amber Flutter, Nip 04!",
currentUser: "<your_npub_here>",
pubKey: "<hex_pubkey_to_encrypt>",
).then((value) {
print("ciphertext: ${value['signature']}")
});
Nip 44 Encrypt
amber.nip44Encrypt(
plaintext: "Hello from Amber Flutter, Nip 44!",
currentUser: "<your_npub_here>",
pubKey: "<hex_pubkey_to_encrypt>",
).then((value) {
print("ciphertext: ${value['signature']}")
});
Nip 04 Decrypt
final amber = Amberflutter();
amber.nip04Decrypt(
ciphertext: "<message_encrypted_with_nip04_here>",
currentUser: "<your_npub_here>",
pubKey: "<hex_pubkey_to_decrypt>",
).then((value) {
print("plaintext: ${value['signature']}")
});
Nip 44 Decrypt
final amber = Amberflutter();
amber.nip44Decrypt(
ciphertext: "<message_encrypted_with_nip44_here>",
currentUser: "<your_npub_here>",
pubKey: "<hex_pubkey_to_decrypt>",
).then((value) {
print("plaintext: ${value['signature']}")
});
Detect if Amber is installed in users's device
final amber = Amberflutter();
amber.isAppInstalled().then((value) {
print("Amber is installed: $value")
});