addButton static method

void addButton(
  1. String projectId, {
  2. String? authJson,
  3. String? server,
  4. int buttonAlign = BUTTON_ALIGN_RIGHT,
  5. int topMargin = 0,
  6. int bottomMargin = 20,
})

Inits SDK, connect to the script side and show Alan button

arguments: projectId - projectId as written in embed code section on the project page authJson - initial variables formatted as json string

Implementation

static void addButton(String projectId,
    {String? authJson,
    String? server,
    int buttonAlign = BUTTON_ALIGN_RIGHT,
    int topMargin = 0,
    int bottomMargin = 20}) async {
  try {
    await _channel.invokeMethod('addButton', <String, dynamic>{
      "projectId": projectId,
      "projectServer": server,
      "projectAuthJson": authJson,
      "buttonAlign": buttonAlign,
      "topMargin": topMargin,
      "bottomMargin": bottomMargin,
      "wrapperVersion": PLUGIN_VERSION
    });
  } catch (e) {
    print("Failed to add Alan button $e");
  }

  _callBackChannel.receiveBroadcastStream().listen((dynamic event) {
    if (event is List) {
      var method = event[0] as String;
      switch (method) {
        case "button_state_changed":
          // ignore: deprecated_member_use_from_same_package
          _handleButtonState(event[1]);
          break;
        case "command":
          // ignore: deprecated_member_use_from_same_package
          _handleCommand(event[1]);
          break;
        case "event":
          // ignore: deprecated_member_use_from_same_package
          _handleEvent(event[1], event[2]);
          break;
        case "onEvent":
          _onEvent(event[1]);
          break;
        case "onButtonState":
          _onButtonState(event[1]);
          break;
        case "onCommand":
          _onCommand(event[1]);
          break;
        default:
          print("Unknown event type $method");
      }
    } else {
      print("Event is not a list, but $event");
    }
  }, onError: (dynamic error) {
    print("Got error in callbacks: $error");
  });
}