【Flutter】子 widget から親の Function を呼び出す
Flutter で子 widget から親の Function を呼び出す方法
【Flutter】子 widget から親の Function を呼び出す
Flutter で子 widget から親の Function を呼び出す方法
サンプル
こちらをサンプルにさせていただいてます。 How to pass functions to child widgets in Flutter - Kindacode
DartPad を使用すればブラウザ上で下記のコードを実行して確認できます。
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
// DEBUG banner
debugShowCheckedModeBanner: true,
title: 'Parent Function Call',
theme: ThemeData(
primarySwatch: Colors.amber,
),
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
// Parent Function
void _passedFunction(String input) {
if (kDebugMode) {
print(input);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ChildWidget(
buttonHandler: _passedFunction,
),
),
);
}
}
class ChildWidget extends StatelessWidget {
// Parent Function
final Function buttonHandler;
const ChildWidget({Key? key, required this.buttonHandler}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
ElevatedButton(
// Parent Function Call
onPressed: () => buttonHandler('Hello'),
child: const Text('Say Hello')),
ElevatedButton(
// Parent Function Call
onPressed: () => buttonHandler('Goodbye'),
child: const Text('Say Goodbye')),
],
);
}
}
親の Homepage の _passedFunction メソッドを ChildWidget の buttonHandler に保存。
そして各ボタンから実行してコンソールに出力するという流れになっています。