Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to import python package using starflut in flutter?

I am trying to to integrate python script in my flutter app and I need to import cv2 in the python code but It did not find the package cv2 ,

is there a way to import python package using starflut in flutter?

Here is the code I used to link the Python code to my flutter app :

dynamic python = null;
String _outputString = "python 3.6";
StarSrvGroupClass SrvGroup;
String docPath;
String resPath;
StarServiceClass Service;

Future<void> testCallPython() async {
  //Initialize starecore
  StarCoreFactory starcore = await Starflut.getFactory();
  Service = await starcore.initSimple("test", "123", 0, 0, []);

  //Register callback function
  await starcore.regMsgCallBackP(
      (int serviceGroupID, int uMsg, Object wParam, Object lParam) async {
    print("FIRST PRINT $serviceGroupID  $uMsg   $wParam   $lParam");
    return null;
  });
  SrvGroup = await Service["_ServiceGroup"];

  /*---script python--*/
  //Initialize python
  // for android, before run python, share libraries must be copied to app’s local folder.
  bool isAndroid = await Starflut.isAndroid();
  if (isAndroid == true) {
    await Starflut.copyFileFromAssets("Main_darts.py",
        "flutter_assets/starfiles", "flutter_assets/starfiles");
    await Starflut.copyFileFromAssets("python3.6.zip",
        "flutter_assets/starfiles", null); //desRelatePath must be null
    await Starflut.copyFileFromAssets("zlib.cpython-36m.so", null, null);
    await Starflut.copyFileFromAssets("unicodedata.cpython-36m.so", null, null);
    await Starflut.loadLibrary("libpython3.6m.so");
  }

  docPath = await Starflut.getDocumentPath();
  print("docPath = $docPath");

  resPath = await Starflut.getResourcePath();
  print("resPath = $resPath");

// Initialize python
  dynamic rr1 = await SrvGroup.initRaw("python36", Service);

  print("initRaw = $rr1");

// PYTHON SCRIPT
  var Result1 = await SrvGroup.loadRawModule("python", "",
      resPath + "/flutter_assets/starfiles/" + "Main_darts.py", false);
  print("loadRawModule = $Result1");

  python = await Service.importRawContext("python", "", false, "");
  print("python = " + await python.getString());
}

Thanks in advance .

like image 245
Maria Nabil Avatar asked Nov 07 '22 07:11

Maria Nabil


1 Answers

If you want to integrate python packages inside your app I would strongly recommend using chaquopy plugin for flutter, as it's easy to use and also have python package support.

like image 147
Jay Dangar Avatar answered Nov 14 '22 12:11

Jay Dangar