当前位置: 首页 > wzjs >正文

网站公告弹窗源码在线手机建网站

网站公告弹窗源码,在线手机建网站,wordpress文章名称背景,外贸订单网站有哪些​​1️⃣ 项目结构(先创建这些文件)​​ my_ffi_app/ ├── lib/ │ ├── main.dart # Flutter 主界面 │ └── native_add.c # C 语言代码(FFI 调用的核心) ├── android/ │ └── app/ │ …

​1️⃣ 项目结构(先创建这些文件)​

my_ffi_app/
├── lib/
│   ├── main.dart          # Flutter 主界面
│   └── native_add.c       # C 语言代码(FFI 调用的核心)
├── android/
│   └── app/
│       └── build.gradle   # Android 配置
└── ios/└── Runner.xcworkspace # iOS 自动配置(Xcode 管理)

​2️⃣ C 代码:lib/native_add.c

#include <stdint.h> // 引入标准整数类型(如 int32_t)// 告诉编译器:按C风格编译(Dart只能调C风格函数)
extern "C" {// 标记函数为"可见"(防止被编译器优化删除)__attribute__((visibility("default")))// 标记函数为"被使用"(确保链接时保留)__attribute__((used))// 定义一个加法函数(返回 int32_t,参数为 x, y)int32_t native_add(int32_t x, int32_t y) {return x + y; // 最简单的加法!}
}

​3️⃣ Android 配置:android/app/build.gradle

android {defaultConfig {// ... 其他配置externalNativeBuild {cmake {path "../CMakeLists.txt" // 指定 CMake 配置文件路径}}}
}

👉 ​​新建 android/app/CMakeLists.txt​(文件名固定!):

cmake_minimum_required(VERSION 3.6) # 要求 CMake 最低版本
add_library( # 编译一个动态库(Android 叫 .so)native_add         # 库名(随便起)SHARED             # 类型:动态库../../lib/native_add.c  # C 文件路径(从项目根目录算)
)

4️⃣ iOS 配置(自动!)​

✅ 无需额外配置!Xcode 会自动识别 ios/Runner 下的 .c 文件。

​5️⃣ Dart 代码:lib/main.dart

import 'package:flutter/material.dart';
import 'dart:ffi';    // FFI 核心库
import 'dart:io';     // 用于判断平台(Android/iOS)void main() => runApp(MyApp());class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(body: Center(child: FutureBuilder(future: _calculate(), // 异步执行 FFI 调用builder: (ctx, snapshot) => Text("1+2=${snapshot.data}"),),),),);}Future<int> _calculate() async {// 第一步:加载动态库(Android 和 iOS 方式不同)final dylib = Platform.isAndroid? DynamicLibrary.open("libnative_add.so")  // Android 库名: DynamicLibrary.process();                // iOS 直接读进程// 第二步:查找 C 函数符号(按名称找函数)final nativeAdd = dylib.lookupFunction<Int32 Function(Int32, Int32), // C 函数签名(输入输出类型)int Function(int, int)        // Dart 函数签名(自动转换类型)>("native_add");                  // 要查找的函数名// 第三步:像普通 Dart 函数一样调用!return nativeAdd(1, 2); // 输出 1+2=3}
}

6️⃣ 运行说明​

  1. ​Android​​:直接 flutter run
  2. ​iOS​​:先打开 ios/Runner.xcworkspace,用 Xcode 添加 native_add.c 文件(右键 Runner → Add Files)

​🧠 核心概念解释(小学生版)​

关键词作用类比
​FFI​让 Dart 和 C 语言互相通话的“翻译官”会说两国语言的机器人
​DynamicLibrary​加载 C 编译好的动态库(.so 或 .dylib打开一本外文书
​lookupFunction​在书里查找指定的函数(按函数名)翻到书的第 XX 页
​extern "C"​告诉 C++ 编译器:“别用复杂语法,用简单的 C 风格写!”用小学生词汇写说明书

文章转载自:

http://w1KOqiCU.ssjtr.cn
http://PGvuhhil.ssjtr.cn
http://FTOlm1bi.ssjtr.cn
http://TxzYKX9P.ssjtr.cn
http://aAUBDt8Y.ssjtr.cn
http://m2aZUNjs.ssjtr.cn
http://B4QB3o4j.ssjtr.cn
http://9yuy2rnM.ssjtr.cn
http://WmXtkhM8.ssjtr.cn
http://Y0EJTCBU.ssjtr.cn
http://9HjON01b.ssjtr.cn
http://u7qk1SRU.ssjtr.cn
http://sr4XCnfh.ssjtr.cn
http://Vvg9JhCr.ssjtr.cn
http://vrSYzUwG.ssjtr.cn
http://y6KLYA9L.ssjtr.cn
http://H1ver0qA.ssjtr.cn
http://HDWbKTQu.ssjtr.cn
http://97G28n27.ssjtr.cn
http://Pbq67rdy.ssjtr.cn
http://TbA9qEHd.ssjtr.cn
http://20YWSKIR.ssjtr.cn
http://6LpA8PLK.ssjtr.cn
http://tEsSp0rI.ssjtr.cn
http://iAE6mRtm.ssjtr.cn
http://l8OwjhgF.ssjtr.cn
http://i0AfXvqb.ssjtr.cn
http://6exy50UB.ssjtr.cn
http://01hjjRnz.ssjtr.cn
http://y9TPAjPs.ssjtr.cn
http://www.dtcms.com/wzjs/768871.html

相关文章:

  • 销售牛的网站广州网络推广公司有哪些
  • 潍坊企业网站郑州网站优化哪家专业
  • 怎样管理一个俄语网站网站 系统 区别
  • 怎么查网站的注册信息21世纪上海人才网官网
  • 绵阳市建设工程监督网站嘉祥网站建设哪家便宜
  • 广东建设监理协会网站个人账号十大网站建立公司
  • 四平市城乡建设局网站悟空建站是什么
  • 取消网站的通知书网站开发项目流程设计
  • 怎样查看网站是否被百度收录[8dvd]flash网站源文件 flash整站源码
  • 保定网站设计制作需要多少钱怎么做线上销售
  • 重庆云阳网站建设wordpress查询分页插件
  • 做网站的公司叫什么名字好跨境电商怎么做视频教程
  • 新网站备案查询中国建设银行个人登录查询入口
  • 如皋市城乡建设局网站ps 怎么做网站
  • 中山网站建设网站柳州做网站公司
  • 男女做暖暖的时候网站电子商务网站设计要求
  • 休闲食品网站建设策划书如何成立一家咨询公司
  • 免费的免抠图素材网站seo免费工具
  • 东莞产品网站建设公司网站设计制作开发方案
  • 西宁网站建设天锐科技徐州钢网架公司
  • 上市公司做网站有什么用番禺人才网招聘信恿
  • 西安晨曦e动网站建设dw创建网站导航栏菜单怎么做
  • 上海阿里巴巴网站建设外贸网站seo有哪些公司
  • 如何360收录网站阿里云中文域名建设网站
  • 仿淘宝电商网站开发报价html留言簿网站基本框架搭建
  • 珠海 网站 设计游戏网站搭建需要多少钱
  • 网站制作花多少钱什么是网络营销的第二层次
  • 网站建设kpi考核wordpress移动端编辑器
  • 网站制作的费用仿冒网站制作
  • 企业 网站设计收费网站怎么免费