deeplink_rpc 1.1.0 copy "deeplink_rpc: ^1.1.0" to clipboard
deeplink_rpc: ^1.1.0 copied to clipboard

A RPC-via-deeplink communication library coded in Dart. This is dedicated to Flutter mobile applications (iOS / Android).

example/lib/main.dart

/// SPDX-License-Identifier: AGPL-3.0-or-later
import 'dart:convert';

import 'package:deeplink_rpc/deeplink_rpc.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';

void main() {
  runApp(MyApp());
}

final _deeplinkRpcClient = DeeplinkRpcClient();

class MyApp extends StatelessWidget {
  MyApp({super.key});

  final _messengerKey = GlobalKey<ScaffoldMessengerState>();
  final _logger = Logger('Example app');

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: _messengerKey,
      title: 'DeeplinkRPC Demo',
      onGenerateRoute: (settings) {
        if (_deeplinkRpcClient.handleRoute(settings.name)) return;
        return null;
      },
      home: Scaffold(
        floatingActionButton: FloatingActionButton(
          child: const Icon(Icons.send),
          onPressed: () async {
            final response = await _deeplinkRpcClient.send(
              timeout: const Duration(seconds: 5),
              request: DeeplinkRpcRequest(
                requestUrl: 'serverapp://server.app/request_endpoint',
                replyUrl: 'clientapp://client.app/reply_endpoint',
                params: {
                  'param1': 'value1',
                  'param2': 'value2',
                },
              ),
            );

            response.map(
              failure: (failure) {
                _logger.severe(
                  'RPC request failed',
                  failure,
                );
                _messengerKey.currentState?.showSnackBar(
                  SnackBar(
                    content: Text(failure.message ?? 'An error occured'),
                  ),
                );
              },
              success: (result) {
                _logger.info(
                  'RPC request succeed : ${json.encode(result)}',
                );
                _messengerKey.currentState?.showSnackBar(
                  SnackBar(content: Text(json.encode(result))),
                );
              },
            );
          },
        ),
        body: const SafeArea(
          child: Padding(
            padding: EdgeInsets.all(8),
            child: Center(
              child: Text('Client example'),
            ),
          ),
        ),
      ),
    );
  }
}
3
likes
130
points
508
downloads

Publisher

verified publisherarchethic.net

Weekly Downloads

A RPC-via-deeplink communication library coded in Dart. This is dedicated to Flutter mobile applications (iOS / Android).

Repository (GitHub)
View/report issues
Contributing

Documentation

API reference

License

AGPL-3.0 (license)

Dependencies

archive, freezed_annotation, json_annotation, logging, url_launcher, uuid

More

Packages that depend on deeplink_rpc