Files
breez-sdk-liquid/packages/flutter/example/lib/main.dart
ok300 bcb4743260 Integrate sdk-common (#308)
* Rename Network to LiquidSdkNetwork to avoid naming conflicts with sdk-common

* Integrate sdk-common: re-use parse_invoice

* Fix UDL bindings tests

* Add input parser support

* CLI: Add input parser support

* Integrate lnurl-pay

* Cargo format, re-generate FRB and RN bindings

* Duplicate LnUrlPayError, update FRB/UniFFI bindings

* Move duplicate LnUrlPayError to FRB bindings.rs

* Add support for lnurl-withdraw

* Lnurl-withdraw: convert units, incorporate fees

* Bump sdk-common, rename InputType::LnUrlError

* Bump sdk-common, remove Wrapped prefix from LnUrlPaySuccessData, LnUrlPayResult

* LNURL-withdraw: add missing UDL mappings

* Add support for LNURL-auth

* Move LNURL structs into models.rs

* Rename LiquidSdkNetwork to LiquidNetwork

* Fix binding tests

* Fix tests

* Move FRB mirroring structs to bindings.rs

* Remove TODO

* Bump sdk-common, remove sdk-common dependency on rusqlite

* Propagate LiquidNetwork rename into flutter example app

* CI: install protobuf before running clippy

* CI: add rust cache, protobuf for remaining rust steps
2024-06-20 16:18:50 +00:00

65 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_breez_liquid/flutter_breez_liquid.dart';
import 'package:flutter_breez_liquid_example/routes/connect/connect_page.dart';
import 'package:flutter_breez_liquid_example/routes/home/home_page.dart';
import 'package:flutter_breez_liquid_example/services/credentials_manager.dart';
import 'package:flutter_breez_liquid_example/services/keychain.dart';
import 'package:flutter_breez_liquid_example/utils/config.dart';
import 'services/breez_liquid_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await initialize();
final BreezLiquidSDK liquidSDK = BreezLiquidSDK();
final credentialsManager = CredentialsManager(keyChain: KeyChain());
final mnemonic = await credentialsManager.restoreMnemonic();
if (mnemonic.isNotEmpty) {
reconnect(liquidSDK: liquidSDK, mnemonic: mnemonic);
}
runApp(App(credentialsManager: credentialsManager, liquidSDK: liquidSDK));
}
Future<BindingLiquidSdk> reconnect({
required BreezLiquidSDK liquidSDK,
required String mnemonic,
LiquidNetwork network = LiquidNetwork.mainnet,
}) async {
final config = await getConfig(network: network);
final req = ConnectRequest(
config: config,
mnemonic: mnemonic,
);
return await liquidSDK.connect(req: req);
}
class App extends StatefulWidget {
final CredentialsManager credentialsManager;
final BreezLiquidSDK liquidSDK;
const App({super.key, required this.credentialsManager, required this.liquidSDK});
static const title = 'Breez Liquid SDK Demo';
@override
State<App> createState() => _AppState();
}
class _AppState extends State<App> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: App.title,
theme: ThemeData.from(colorScheme: ColorScheme.fromSeed(seedColor: Colors.white), useMaterial3: true),
home: widget.liquidSDK.wallet == null
? ConnectPage(
liquidSDK: widget.liquidSDK,
credentialsManager: widget.credentialsManager,
)
: HomePage(
credentialsManager: widget.credentialsManager,
liquidSDK: widget.liquidSDK,
),
);
}
}