ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Flutter 调用Android 方法 , 提供有参数方法

2024-09-03 10:20:12  阅读:56  来源: 互联网

标签:


在 Flutter 中调用 Android 的方法,通常需要使用平台通道(Method Channels)。以下是一个简单的示例,演示如何在 Flutter 应用中调用 Android 方法,并传递参数。

步骤 1:创建 Flutter 应用

首先,你需要创建一个 Flutter 应用,如果还没有创建,可以通过以下命令创建:

flutter create flutter_android_method_call
cd flutter_android_method_call

Bash

步骤 2:修改 Flutter 代码

打开 lib/main.dart 文件,添加 Method Channel 的实现。

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

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

class MyApp extends StatelessWidget {
  static const platform = MethodChannel('com.example.method_channel');

  Future<void> _callAndroidMethod() async {
    try {
      final int result = await platform.invokeMethod('calculateSum', <String, int>{
        'a': 5,
        'b': 10,
      });
      print("Result from Android: $result");
    } on PlatformException catch (e) {
      print("Failed to get result: '${e.message}'.");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter to Android Method Call')),
        body: Center(
          child: ElevatedButton(
            onPressed: _callAndroidMethod,
            child: Text('Call Android Method'),
          ),
        ),
      ),
    );
  }
}

Dart

步骤 3:实现 Android 方法

接下来,你需要在 Android 端实现这个方法。在 android/app/src/main/kotlin 文件夹中找到主活动文件(通常是 MainActivity.kt 或 MainActivity.java),并添加以下代码。

对于 Kotlin 版本:

package com.example.flutter_android_method_call

import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.MethodChannel

class MainActivity: FlutterActivity() {
    private val channel = "com.example.method_channel"

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, channel).setMethodCallHandler {
            call, result ->
            if (call.method == "calculateSum") {
                val a = call.argument<Int>("a") ?: 0
                val b = call.argument<Int>("b") ?: 0
                val sum = a + b
                result.success(sum)
            } else {
                result.notImplemented()
            }
        }
    }
}

Kotlin

对于 Java 版本:

package com.example.flutter_android_method_call;

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugin.common.MethodChannel;

public class MainActivity extends FlutterActivity {
    private static final String CHANNEL = "com.example.method_channel";

    @Override
    public void configureFlutterEngine(FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
        new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
            .setMethodCallHandler(
                (call, result) -> {
                    if (call.method.equals("calculateSum")) {
                        int a = call.argument("a");
                        int b = call.argument("b");
                        int sum = a + b;
                        result.success(sum);
                    } else {
                        result.notImplemented();
                    }
                }
            );
    }
}

Java

步骤 4:运行应用

确保你已经配置好 Android Studio 和设备,然后运行 Flutter 应用:

flutter run

Bash

结果

当你点击 "Call Android Method" 按钮时,Flutter 将调用 Android 方法,传递参数 a 和 b,并获取它们的和。

参考文档

  • Flutter 官方文档 - Platform Channels
  • Flutter 官方文档 - Method Channel

这样,你就能够在 Flutter 中调用 Android 方法并传递参数了!

标签:
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有