Flutter WebView Bridge 설정 가이드
Flutter 애플리케이션과 웹 콘텐츠 간의 통신을 구현하기 위해 webview_flutter
패키지를 사용하여 WebView와 브릿지 설정 방법을 설명합니다.
이 가이드는 WebView에서 JavaScript와 Flutter 간 메시지를 주고받는 기본적인 방법을 제공합니다.
패키지 추가
프로젝트의 pubspec.yaml
파일에 webview_flutter
패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
webview_flutter: ^3.0.0
명령어를 실행하여 패키지를 설치합니다:
flutter pub get
WebView 위젯 설정
Flutter에서 WebView를 구현하여 웹 페이지를 로드하고 JavaScript와 통신을 설정합니다.
샘플 코드
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewExample extends StatefulWidget {
@override
_WebViewExampleState createState() => _WebViewExampleState();
}
class _WebViewExampleState extends State<WebViewExample> {
final Completer<WebViewController> _controller = Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('WebView Example'),
),
body: WebView(
initialUrl: 'https://yourwebsite.com',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
javascriptChannels: <JavascriptChannel>{
_createJavascriptChannel(),
},
),
);
}
JavascriptChannel _createJavascriptChannel() {
return JavascriptChannel(
name: 'FlutterBridge',
onMessageReceived: (JavascriptMessage message) {
print('Message received from web: ${message.message}');
},
);
}
}
웹 페이지에서 Flutter로 메시지 보내기
웹 페이지에서 Flutter로 메시지를 보내는 방법을 설명합니다. window.FlutterBridge.postMessage
를 사용하여 WebView와 연결된 브릿지로 데이터를 보냅니다.
샘플 코드
웹 페이지 JavaScript입니다.
function sendMessageToFlutter(message) {
if (window.FlutterBridge) {
window.FlutterBridge.postMessage(message);
}
}
예제 동작
- 위 JavaScript 함수는 웹 페이지에 포함됩니다.
sendMessageToFlutter('Hello from Web!')
를 호출하면 Flutter로 메시지가 전달됩니다.- Flutter에서 메시지를 수신하고 로그로 출력합니다.
Flutter에서 웹 페이지로 메시지 보내기
Flutter에서 WebView 내 JavaScript로 메시지를 보냅니다. evaluateJavascript
메서드를 사용하여 JavaScript 코드를 실행할 수 있습니다.
샘플 코드
void sendMessageToWeb(WebViewController controller) async {
final url = await controller.currentUrl();
print('Current URL: $url');
controller.evaluateJavascript("alert('This is a message from Flutter!')");
}
예제 동작
sendMessageToWeb
함수가 호출되면, WebView에서 JavaScript로alert
메시지가 실행됩니다.- 웹 페이지에서 JavaScript를 통해 메시지를 받을 수 있습니다.
요약
- webview_flutter 패키지를 사용하여 Flutter와 WebView 간 통신을 설정합니다.
- JavaScript와 Flutter 간의 양방향 메시지 전송을 구현할 수 있습니다.
- 웹 페이지에서 Flutter로 메시지를 보낼 때
JavascriptChannel
을 활용합니다. - Flutter에서 웹 페이지로 메시지를 보낼 때
evaluateJavascript
메서드를 사용합니다.
추가 참고 자료
Updated 2 days ago