Экземпляр поставщика, похоже, был неправильно принят в методе MethodChannel.setMethodCallHandler.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Экземпляр поставщика, похоже, был неправильно принят в методе MethodChannel.setMethodCallHandler.

Сообщение Anonymous »

Код: Выделить всё

class MainActivity : FlutterActivity() {
private final val CHANNEL = "com.example/mediaControl";
private lateinit var flutterEngine: FlutterEngine;
lateinit var channel:MethodChannel;
private fun sendKeyCodeToFlutter(keyCode: String) {
channel.invokeMethod(
"sendKeyCode",
keyCode
)
}
override fun onCreate(savedInstanceState: Bundle?) {
flutterEngine = FlutterEngine(this);
flutterEngine.getDartExecutor().executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault());
channel = MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL);
Handler().postDelayed({
sendKeyCodeToFlutter("countAdd");
}, 3000)
super.onCreate(savedInstanceState)
}
}

Код: Выделить всё

void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => Counter()),
],
child: const MyApp(),
),
);
}
class Counter with ChangeNotifier, DiagnosticableTreeMixin {
int _count = 0;
int get count => _count;
void increment() {
_count++;
notifyListeners();
}
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
@override
void initState() {
super.initState();
var _context = context;
const MethodChannel _channel = MethodChannel('com.example/mediaControl');
_channel.setMethodCallHandler((call) async {
switch (call.method) {
case 'sendKeyCode':
if (call.arguments == 'countAdd') {
Provider.of(context, listen: false).increment();
print('receive: countAdd');
print('receive: ${Provider.of(context, listen: false).count}');
}
break;
default:
throw UnimplementedError();
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('${context.watch().count}')
],
),
)
);
}
}
Я хочу отправить сообщение на сторону Flutter через Android, чтобы вызвать определенную функцию экземпляра провайдера на стороне Flutter. В результате его можно запустить, но похоже, что экземпляр получен неправильно, и счетчик на странице не обновился.
Хочу отправить сообщение во Flutter через Android, чтобы вызвать определенную функцию экземпляра провайдера на стороне Flutter. В результате его можно запустить, но похоже, что экземпляр получен неправильно, и счетчик на странице не обновился

Подробнее здесь: https://stackoverflow.com/questions/784 ... annel-setm
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»