call 0.3.0 copy "call: ^0.3.0" to clipboard
call: ^0.3.0 copied to clipboard

Calling dynamic link library(native function) in the way of defining static resources. You can use the package to open the dylib defined in the `assets` field of `pubsepc.yaml`.

call #

😭 😭

You can use the package to open the dylib defined in the assets field of pubsepc.yaml.


  • Write your C-code
// file: ${PROJECT_ROOT}/assets/main.c

int add(int a, int b) {
  return a + b;
}
  • Compile it to a dylib
gcc -shared -fPIC -o libadd.so main.c           # Linux
gcc -shared -fPIC -o libadd.dll main.c          # Windows
clang -shared -fPIC -o libadd.dylib main.c      # MacOS

# file: ${PROJECT_ROOT}/assets/libadd.dll

2. Declare the assets path #

You should declare path of the dylib in the pubspec.yaml file as images.

flutter:
  assets:
    - assets/libadd.dll # Fill it in according to your storage location

3. Write flutter core code to call native function. #

import 'package:flutter/material.dart';

import 'dart:ffi' as ffi;
import 'package:call/call.dart';

typedef FuncNative = ffi.Int32 Function(ffi.Int32, ffi.Int32);
typedef FuncDart = int Function(int, int);



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

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  @override
  Widget build(BuildContext context) {
    var dll = getDyLibModule('assets/libadd.dll');     // use it as images.
    var add = dll.lookupFunction<FuncNative, FuncDart>('add');

    return Text(
             add(999, 54639).toString(),
             textDirection: TextDirection.ltr
          );
  }
}

4. Run the flutter application #

Finally, You can see the number 55638 in the top left corner of the application.

6
likes
130
points
58
downloads

Publisher

unverified uploader

Weekly Downloads

Calling dynamic link library(native function) in the way of defining static resources. You can use the package to open the dylib defined in the `assets` field of `pubsepc.yaml`.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path

More

Packages that depend on call