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
pub points
74%
popularity

Publisher

unverified uploader

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)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path

More

Packages that depend on call