if (call.method.equals("addTwoNumbers")) {
int a = call.argument("a");
int b = call.argument("b");
// 使用工厂类调用 Python 的加法函数
int sum = pythonFactory.addTwoNumbers(a, b);
result.success(sum); // 将结果返回给 Flutter 端
}
@override
Future<int> addTwoNumbers(int a, int b) async {
try {
final result =
await methodChannel.invokeMethod('addTwoNumbers', {'a': a, 'b': b});
return result;
} on PlatformException catch (e) {
print("调用 Python 失败: '${e.message}'.");
return -1;
}
}
Future<int?> addTwoNumbers(int a, int b) {
return FlutterPackagesAudioAnalysisPlatform.instance.addTwoNumbers(a, b);
}
七、写测试代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_packages_audio_analysis/flutter_packages_audio_analysis.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
final _flutterPackagesAudioAnalysisPlugin = FlutterPackagesAudioAnalysis();
@override
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
try {
platformVersion =
await _flutterPackagesAudioAnalysisPlugin.getPlatformVersion() ??
'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
int addRes = 0;
add() async {
int a = 8;
int b = 9;
addRes =
await _flutterPackagesAudioAnalysisPlugin.addTwoNumbers(a, b) ?? 100;
setState(() {});
}
add1() async {
int a = 8;
int b = 19;
addRes =
await _flutterPackagesAudioAnalysisPlugin.addTwoNumbers(a, b) ?? 100;
setState(() {});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('Running on: $_platformVersion\n'),
ElevatedButton(onPressed: add, child: Text('Add')),
Text("相加结果:${addRes}"),
ElevatedButton(onPressed: add1, child: Text('Add1')),
],
),
),
),
);
}
}
Hugging Face 提供了丰富的预训练模型和数据集,而且使用 Hugging Face 提供的 from_pretrained() 方法可以轻松加载它们,但是,模型和数据集文件通常体积庞大,用默认方法下载起来非常花时间。 本文将指导你如何使用 HFD(…