์ง๋ํ๊ธฐ ์บก์คํค ๋์์ธ์์ WebView๋ฅผ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ๊ธฐํ์ ํ์์ง๋ง,, ์ผ์ ์์ ๋ฌธ์ ๋ก ํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ ๋ชปํ ์ผ์ ์ด๋ฒ ํ๊ธฐ์๋ ํด๋์ต๋๋ค..
์ด์ฉ๋ค๋ณด๋ ํ ๊ตฌ์ฑ์ ์ค ์ฑ ๊ฐ๋ฐ ์คํ ๋ณด์ ์๋ ์์๊ณ , ์น ๊ฐ๋ฐ์ ๋ง์์ต๋๋ค. (react) ์ด์ฐ์ ์ฐํ์ฌ ํ๋ฌํฐ๋ฅผ ํตํด ์ฑ ๋น๋๋ฅผ ์ง์ํด๋ณด๋ ค ํฉ๋๋ค.
์ฐ์ ์ฌ์ฉ๋ ํจํค์ง๋ค์ ๋ฒ์ ์ ๋๋ค.
cupertino_icons: ^1.0.2
webview_flutter: ^4.2.0
path_provider: ^2.0.15
get: ^4.6.5
webview_flutter_wkwebview: ^3.4.3
webview_flutter_android: ^3.7.0
flutter_native_splash: ^2.3.0
Flutter์ ๋ฒ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
Flutter 3.10.1 โข channel stable โข https://github.com/flutter/flutter.git
Framework โข revision d3d8effc68 (10 days ago) โข 2023-05-16 17:59:05 -0700
Engine โข revision b4fb11214d
Tools โข Dart 3.0.1 โข DevTools 2.23.1
flutter๋ react์ ๊ฐ์ด ํจํค์ง ๋ฒ์ ๋ง๋ค ์ฝ๋๊ฐ ๋ง์ด ๋ณ๊ฒฝ๋๋๊ฒ ๊ฐ์. ์ ์ํด์ผ ํฉ๋๋ค.
์ฐ์ ์ ์ผ ์ค์ํ WebView
์
๋๋ค.
// webview_controller.dart
//GetX๋ผ๋ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ปจํธ๋กค๋ฌ ํ์ฉ
class WebviewMainController extends GetxController {
//WebviewMainController ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํ
static WebviewMainController get to => Get.find();
//controller ๊ฐ์ฒด ์ ์ธ
final WebViewController controller = WebViewController()
//์๋ฐ์คํธ๋ฆฝํธ ์ฌ์ฉ ์ฌ๋ถ
..setJavaScriptMode(JavaScriptMode.unrestricted)
//์น๋ทฐ ๊ด๋ จ ์ด๋ฒคํธ๋ค
..setNavigationDelegate(
NavigationDelegate(
onProgress: (int progress) {
debugPrint('progressing $progress');
},
onPageStarted: (String url) {
debugPrint(url);
},
onPageFinished: (String url) {
debugPrint('Page Finished');
},
onWebResourceError: (WebResourceError error) {},
),
)
//์ ์ํ [URL]์ ์ฝ์
..loadRequest(Uri.parse([URL]));
// ๋ค๋ฅธ ํ์ผ์์ controller๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํจ
WebViewController getController() {
return controller;
}
}
//main.dart
void main() {
// Flutter ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ฏ ๋ฐ์ธ๋ฉ์ ์ด๊ธฐํ
WidgetsFlutterBinding.ensureInitialized();
// ๋ฐ์ํ ์ํ ๊ด๋ฆฌ controller ๋ฑ๋ก
Get.put(WebviewMainController());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
//WebviewMainController์ controller๋ฅผ ํธ์ถ
late final controller = WebviewMainController.to.getController();
return MaterialApp(
home: Scaffold(
appBar: PreferredSize(
//์ฑ ๋ฐ๋ ํ์ํ์ง ์์๊ธฐ์ 0์ผ๋ก
preferredSize: const Size.fromHeight(0),
// elevation = ํ์ํ์ง ์์ ๊ทธ๋ฆผ์ ํจ๊ณผ
child: AppBar(elevation: 0)),
//WebViewWidget์ controller๋ฅผ parameter๋ก ๋๊ฒจ์ค๋ค
body: WebViewWidget(controller: controller),
),
);
}
}
์ด๋ ๊ฒํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ์น๋ทฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง,, ์ดํ๋ฆฌ์ผ์ด์
์ฒ๋ผ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํด์ . ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋์ด์ผ ํ๋๋ฐ,
๊ทธ ์ค ์ค์ํ ๊ฒ์ Flutter
- Web
๊ฐ์ ํต์ ์ด ์ด๋ค์ ธ์ผ ํฉ๋๋ค.
์ด๋ ๋ค์ ํฌ์คํ
์์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.