Flutter 使用 安卓 制作的Library

1.打開(kāi) Android Studio,創(chuàng)建一個(gè)新項(xiàng)目或在現(xiàn)有項(xiàng)目中添加一個(gè) Android Library 模塊:
File -> New -> New Module -> Android Library。
模塊名稱:例如 mylibrary。

2.項(xiàng)目結(jié)構(gòu)如下:
mylibrary/
├── src/main/
│ ├── kotlin/com/example/mylibrary/
│ │ ├── Calculator.kt
│ │ ├── CalculatorImpl.kt
│ │ ├── CalculatorFactory.kt
│ ├── AndroidManifest.xml
├── build.gradle

2.1 編寫(xiě) Kotlin 代碼
Calculator.kt(接口)
package com.example.mylibrary

interface Calculator {
fun add(a: Int, b: Int): Int
}

CalculatorImpl.kt(實(shí)現(xiàn))

package com.example.mylibrary

internal class CalculatorImpl : Calculator {
override fun add(a: Int, b: Int): Int {
return a + b // 具體實(shí)現(xiàn)
}
}

CalculatorFactory.kt(工廠類)
package com.example.mylibrary

object CalculatorFactory {
fun getCalculator(): Calculator {
return CalculatorImpl()
}
}
2.2 打包 AAR
在 Android Studio 中,點(diǎn)擊 Build -> Rebuild Project。
運(yùn)行以下命令生成 AAR:
bash
./gradlew :mylibrary:assembleRelease
輸出文件位于:
mylibrary/build/outputs/aar/mylibrary-release.aar

3.1 添加 AAR 依賴
將 mylibrary-release.aar 復(fù)制到目標(biāo)項(xiàng)目的 app/libs/ 目錄。
修改目標(biāo)項(xiàng)目的 app/build.gradle:
gradle
dependencies {
implementation files('libs/mylibrary-release.aar')
}

3.2 調(diào)用接口
在目標(biāo)項(xiàng)目的 Kotlin 代碼中:
package com.example.myflutterapp

import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import com.example.mylibrary.CalculatorFactory

class MainActivity: FlutterActivity() {
private val CHANNEL = "com.example/calculator"

override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
    super.configureFlutterEngine(flutterEngine)
    MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
        if (call.method == "add") {
            val a = call.argument<Int>("a") ?: 0
            val b = call.argument<Int>("b") ?: 0
            val calculator = CalculatorFactory.getCalculator()
            val sum = calculator.add(a, b)
            result.success(sum)
        } else {
            result.notImplemented()
        }
    }
}

}

3.3 在 Dart 中調(diào)用
lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
static const platform = MethodChannel('com.example/calculator');
String _result = 'Waiting for result...';

Future<void> _calculateAdd(int a, int b) async {
try {
final int result = await platform.invokeMethod('add', {'a': a, 'b': b});
setState(() {
_result = 'Result: a +b = result'; }); } catch (e) { setState(() { _result = 'Error:e';
});
}
}

@Override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('AAR Library Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(_result),
ElevatedButton(
onPressed: () => _calculateAdd(5, 3),
child: Text('Calculate 5 + 3'),
),
],
),
),
),
);
}
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容