dart_objc 0.1.8 copy "dart_objc: ^0.1.8" to clipboard
dart_objc: ^0.1.8 copied to clipboard

Write Objective-C Code using Dart. This package liberates you from native code and low performance channel.

example/lib/main.dart

import 'package:dart_objc_example/delegatestub.dart';
import 'package:dart_objc_example/runtimestub.dart';
import 'package:flutter/material.dart';
import 'package:dart_objc/dart_objc.dart';

void main() => runApp(MyApp());

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

class _MyAppState extends State<MyApp> {
  RuntimeStub stub = RuntimeStub().retain();
  DelegateStub delegate = DelegateStub().retain();

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

    // bool resultBool = stub.fooBool(false);
    // print('fooBool result:$resultBool');

    // NSString resultNSString = stub.fooNSString('This is NSString');
    // print('fooNSString result:$resultNSString');

    String resultChar = stub.fooChar('A');
    print('fooChar result:$resultChar');

    String resultUChar = stub.fooUChar('A');
    print('fooUChar result:$resultUChar');

    String resultCharPtr = stub.fooCharPtr('test CString');
    print('fooCharPtr result:$resultCharPtr');

    NSObject resultObj = stub.fooObject(delegate);
    print('fooObject result:$resultObj');

    stub.fooDelegate(delegate);

    Block block = stub.fooBlock(testFunc);
    NSObject result = block.invoke([stub]);
    print(result);

    CGSize size = stub.fooCGSize(CGSize(2, 1));
    print(size);

    CGPoint point = stub.fooCGPoint(CGPoint(2, 1));
    print(point);

    CGVector vector = stub.fooCGVector(CGVector(2, 1));
    print(vector);

    CGRect rect = stub.fooCGRect(CGRect(4, 3, 2, 1));
    print(rect);

    NSRange range = stub.fooNSRange(NSRange(2, 1));
    print(range);

    UIEdgeInsets insets = stub.fooUIEdgeInsets(UIEdgeInsets(4, 3, 2, 1));
    print(insets);

    NSDirectionalEdgeInsets dInsets =
        stub.fooNSDirectionalEdgeInsets(NSDirectionalEdgeInsets(4, 3, 2, 1));
    print(dInsets);

    CGAffineTransform transform =
        stub.fooCGAffineTransform(CGAffineTransform(6, 5, 4, 3, 2, 1));
    print(transform);

    NSArray array = stub.fooNSArray([1, 2.345, 'I\'m String', rect]);
    print(array);

    NSObject currentThread = Class('NSThread')
        .perform(Selector('currentThread'), onQueue: DispatchQueue.global());
    NSObject description = currentThread.perform(Selector('description'));
    String threadResult = NSString.fromPointer(description.pointer).value;
    print('currentThread: $threadResult');

    NSObject center =
        Class('NSNotificationCenter').perform(Selector('defaultCenter'));
    // TODO: Only need function.
    center.perform(Selector('addObserver:selector:name:object:'), args: [
      delegate,
      Selector('handleNotification:'),
      'SampleDartNotification',
      nil
    ]);

    // DispatchQueue.main.async(() {
    //   NSObject currentThread = Class('NSThread').perform(Selector('currentThread'));
    //   NSObject description = currentThread.perform(Selector('description'));
    //   String result = NSString.fromPointer(description.pointer).value;
    //   print('currentThread: $result');
    // });
  }

  Function testFunc = (NSObject a) {
    print('hello block! ${a.toString()}');
    return a;
  };

  Future<void> press() async {}

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: MaterialButton(
              child: Text('dialog'),
              onPressed: () {
                press();
              }),
        ),
      ),
    );
  }

  @override
  void dispose() {
    stub.release();
    delegate.release();
    super.dispose();
  }
}
1
likes
25
pub points
0%
popularity

Publisher

unverified uploader

Write Objective-C Code using Dart. This package liberates you from native code and low performance channel.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

ffi, flutter

More

Packages that depend on dart_objc