fletwork 0.92.71 copy "fletwork: ^0.92.71" to clipboard
fletwork: ^0.92.71 copied to clipboard

unlisted

Allows applications to easily communicate with `Antano Server` instances by handling connection logic.

example/lib/main.dart

import 'dart:async';
import 'dart:developer' show log;

import 'package:fletwork/fletwork.dart';
import 'package:flutter/material.dart';

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

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

class _MyAppState extends State<MyApp> {
  /// Your client instance
  late AntanoClient client;

  /// Your AntanoEvent listeners
  StreamSubscription? logInListener;
  StreamSubscription? logOutListener;
  StreamSubscription? messageListener;
  StreamSubscription? callListener;

  /// Members for login behaviour example
  bool loggedIn = false;
  TextEditingController usernameController = TextEditingController();
  TextEditingController passwordController = TextEditingController();

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

    /// Register the event listeners you need
    logInListener = AntanoEvent().eventBus.on<OnClientLoggedIn>().listen((e) {
      log("Client logged in");
      setState(() => loggedIn = true);
    });

    logOutListener = AntanoEvent().eventBus.on<OnClientLoggedOut>().listen((e) {
      log("Client logged out");
      setState(() => loggedIn = false);
    });

    messageListener =
        AntanoEvent().eventBus.on<OnMessageReceived>().listen((e) {
      log("Client received a message: ${e.message}");
    });

    callListener = AntanoEvent().eventBus.on<OnCallAccepted>().listen((e) {
      log("User accepted a call: ${e.call}");
    });

    /// Set up the client
    client = AntanoClient(
        server: "my_server_url",
        appID: "my_app_id",
        appSecret: "my_app_secret");

    /// Initialize the client, handling any errors
    client.initClient().onError(handleAntanoError);
  }

  @override
  void dispose() {
    /// Make sure to cancel your listeners
    logInListener?.cancel();
    logOutListener?.cancel();
    messageListener?.cancel();
    callListener?.cancel();
    super.dispose();
  }

  /// Example error handler
  ///
  /// The AntanoClient may throw errors it expects the target application
  /// to handle. Not implementing appropriate error handling can therefore
  /// lead to crashes or other unexpected behaviour within your application.
  void handleAntanoError(error, stackTrace) =>
      log("AntanoClient error: ${error.toString()}");

  /// Example widget shown when not logged in
  Widget loginPage() {
    return Center(
        child: Column(
      children: [
        /// Username input
        TextFormField(
            controller: usernameController,
            decoration: const InputDecoration(
              labelText: 'Username',
              icon: Icon(Icons.person),
            )),

        /// Password input
        TextFormField(
            controller: passwordController,
            obscureText: true,
            decoration: const InputDecoration(
              labelText: 'Password',
              icon: Icon(Icons.password),
            )),

        /// Button to start AntanoClient login
        ElevatedButton(
          onPressed: () => client
              .logIn(usernameController.text, passwordController.text)
              .onError(handleAntanoError),
          child: const Text("Login"),
        )
      ],
    ));
  }

  /// Example widget shown when logged in
  Widget userPage() {
    return Center(
        child: Column(children: [
      /// Get the logged in user's information
      Text("Welcome, ${client.currentUser.userName}."),

      /// Button to start AntanoClient logout
      ElevatedButton(onPressed: client.logOut, child: Text("Logout"))
    ]));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: const Text('Fletwork example app'),
      ),
      body: loggedIn ? userPage() : loginPage(),
    ));
  }
}
0
likes
140
points
71
downloads

Publisher

verified publisherantano.io

Weekly Downloads

Allows applications to easily communicate with `Antano Server` instances by handling connection logic.

Homepage

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

event_bus, firebase_core, firebase_messaging, flutter, flutter_secure_storage, http, jose, json_annotation, logger, msgpack_dart, permission_handler, recase, shared_preferences, universal_io, uuid, web_socket_channel

More

Packages that depend on fletwork