wepin_flutter 0.0.3 copy "wepin_flutter: ^0.0.3" to clipboard
wepin_flutter: ^0.0.3 copied to clipboard

outdated

Flutter package of Wepin

example/lib/main.dart

import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:uni_links/uni_links.dart';
import 'package:fluttertoast/fluttertoast.dart';

import 'package:wepin_flutter/wepin.dart';
import 'package:wepin_flutter/wepin_delegate.dart';
import 'package:wepin_flutter/wepin_inputs.dart';
import 'package:wepin_flutter/wepin_outputs.dart';

late Wepin _wepin;
void main() => runApp(MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SampleApp(),
    ));

class SampleApp extends StatefulWidget with WepinDelegate {
  SampleApp({super.key});

  @override
  _SampleApp createState() => _SampleApp();

  @override
  void onWepinError(String errMsg) {
    // TODO: implement onWepinError
    if (kDebugMode) {
      print('onWepinError : $errMsg');
    }
  }

  @override
  void onAccountSet() {
    // TODO: implement onAccountSet
    if (kDebugMode) {
      print('onAccountSet');
    }
    List<Account>? accounts = _wepin.getAccounts();
    if (accounts == null) {
      if (kDebugMode) {
        print('accounts is null');
      }
      return;
    }
    for (var account in accounts!) {
      if (kDebugMode) {
        print('netwrok : ${account.network}');
        print('address : ${account.address}');
      }
    }
  }
}

class _SampleApp extends State<SampleApp> {
  StreamSubscription? _sub;
  final String _appId = 'test_app_id';
  final String _appSdkKey = 'test_app_key';

  @override
  void initState() {
    if (kDebugMode) {
      print('initState');
    }
    super.initState();

    _wepin = Wepin();
    _handleDeepLink(); // Noti : 딥링크 처리함수 추가
  }

  /// Handle incoming links - the ones that the app will recieve from the OS
  /// while already started.
  /// Noti : 딥링크 받는 부분
  void _handleDeepLink() {
    if (kDebugMode) {
      print('_handleDeepLink');
    }
    if (!kIsWeb) {
      // It will handle app links while the app is already started - be it in
      // the foreground or in the background.
      _sub = uriLinkStream.listen((Uri? uri) {
        if (!mounted) return;
        if (kDebugMode) {
          print('got_uri: $uri');
        }
        _wepin.handleWepinLink(uri!);
      }, onError: (Object err) {
        if (!mounted) return;
        if (kDebugMode) {
          print('got_err: $err');
        }
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    if (kDebugMode) {
      print('build');
    }
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Wepin Flutter Example-Dev'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: () => _initialize(context),
                  child: const Text('initialize')),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: _isInitialized,
                  child: const Text('is_initialized')),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: _openWidget,
                  child: const Text('open_widget')),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: _closeWidget,
                  child: const Text('close_widget')),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: _getAccounts,
                  child: const Text('get_accounts')),
              ElevatedButton(
                  style: ElevatedButton.styleFrom(fixedSize: Size(150, 30)),
                  onPressed: _finalize,
                  child: const Text('finalize')),
            ],
          ),
        ),
      ),
    );
  }

  void _initialize(BuildContext context) {
    if (kDebugMode) {
      print('_initialize');
    }
    if (_wepin.isInitialized()) {
      _showToast('Already initialized');
      return;
    }
    WidgetAttributes widgetAttributes = WidgetAttributes('ko', 'krw');
    WepinOptions wepinOptions =
        WepinOptions(_appId, _appSdkKey, widgetAttributes);
    _wepin.initialize(context, wepinOptions);
  }

  void _isInitialized() {
    if (kDebugMode) {
      print('_isInitialized');
    }
    bool result = _wepin.isInitialized();
    _showToast('isIntialized : $result');
  }

  void _openWidget() {
    if (kDebugMode) {
      print('_openWidget');
    }
    if (!_wepin.isInitialized()) {
      _showToast('Wepin is not initialized');
      return;
    }
    _wepin.openWidget();
  }

  void _closeWidget() {
    if (kDebugMode) {
      print('_closeWidget');
    }
    if (!_wepin.isInitialized()) {
      _showToast('Wepin is not initialized');
      return;
    }
    _wepin.closeWidget();
  }

  void _getAccounts() {
    List<Account>? accounts;
    if (kDebugMode) {
      print('_getAccounts');
    }
    if (!_wepin.isInitialized()) {
      _showToast('Wepin is not initialized');
      return;
    }
    accounts = _wepin.getAccounts();
    if (accounts == null) {
      if (kDebugMode) {
        print('accounts is null');
      }
      _showToast('accounts is null');
      return;
    }
    for (var account in accounts) {
      if (kDebugMode) {
        print('network : ${account.network}');
        print('address : ${account.address}');
      }
    }
  }

  void _finalize() {
    if (kDebugMode) {
      print('_finalize');
    }
    _wepin.finalize();
  }

  void _showToast(String message) {
    Fluttertoast.showToast(
        msg: message,
        gravity: ToastGravity.BOTTOM,
        backgroundColor: Colors.grey,
        fontSize: 15.0,
        textColor: Colors.black,
        toastLength: Toast.LENGTH_SHORT);
  }
}