반응형

Flutter에서 자식 위젯에서 부모 위젯으로 이벤트를 전달하는 방법에는 여러 가지가 있습니다. 그 중 하나는 콜백 함수를 사용하는 방법입니다. 예를 들어, 자식 위젯에서 특정 이벤트가 발생했을 때 부모 위젯에 알릴 수 있습니다.

아래는 콜백 함수를 사용하여 자식 위젯에서 부모 위젯으로 이벤트를 전달하는 예제입니다.

  1. 부모 위젯 코드:
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ParentWidget(),
    );
  }
}

class ParentWidget extends StatefulWidget {
  @override
  _ParentWidgetState createState() => _ParentWidgetState();
}

class _ParentWidgetState extends State<ParentWidget> {
  String _message = "No message from child";

  void _handleMessageFromChild(String message) {
    setState(() {
      _message = message;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Parent Widget'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Text(_message),
          ChildWidget(onMessage: _handleMessageFromChild),
        ],
      ),
    );
  }
}
  1. 자식 위젯 코드:
import 'package:flutter/material.dart';

class ChildWidget extends StatelessWidget {
  final Function(String) onMessage;

  ChildWidget({required this.onMessage});

  void _sendMessageToParent() {
    onMessage("Hello from child");
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: _sendMessageToParent,
      child: Text('Send Message to Parent'),
    );
  }
}

이 예제에서 ParentWidget은 상태를 관리하며, 자식 위젯인 ChildWidget에서 발생하는 이벤트를 처리하는 _handleMessageFromChild 메서드를 가지고 있습니다. ChildWidgetonMessage라는 콜백 함수를 받아서, 버튼을 눌렀을 때 부모 위젯으로 메시지를 전달합니다.

이러한 방법을 통해 자식 위젯에서 부모 위젯으로 이벤트를 전달하고, 부모 위젯에서 해당 이벤트를 처리할 수 있습니다.

반응형

+ Recent posts