protocol_handler_plus 1.0.1 copy "protocol_handler_plus: ^1.0.1" to clipboard
protocol_handler_plus: ^1.0.1 copied to clipboard

This plugin allows Flutter apps to register and handle custom protocols (i.e. deep linking).

example/lib/main.dart

import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart';
import 'package:protocol_handler_plus/protocol_handler_plus.dart';
import 'package:protocol_handler_plus_example/pages/home.dart';
import 'package:uni_platform/uni_platform.dart';
import 'package:window_manager/window_manager.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await UniPlatform.call<Future<void>>(
    desktop: () async {
      await windowManager.ensureInitialized();
      const windowOptions = WindowOptions(size: Size(1024, 768), center: true);
      windowManager.waitUntilReadyToShow(windowOptions, () {
        windowManager.show();
      });
      // Register a custom protocol
      await protocolHandlerPlus.register('myprotocol');
    },
    otherwise: () => Future.value(),
  );
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: const Color(0xff416ff4),
        canvasColor: Colors.white,
        scaffoldBackgroundColor: const Color(0xffF7F9FB),
        dividerColor: Colors.grey.withValues(alpha: 0.3),
      ),
      builder: BotToastInit(),
      navigatorObservers: [BotToastNavigatorObserver()],
      home: const HomePage(),
    );
  }
}