Code/Dart & Flutter

여유를 갖고 조금씩 정리하자... 오늘 할 건 Flutter에서의 WebView...

kolbe_starziki 2020. 6. 11. 00:46

Flutter에서 웹뷰는 참 거시기 하다.


이걸 이렇게 쓰면 차라리 네이티브로 짜지란.... 생각이 많이 든다.


네이티브개발은 안해본 1인... ㅋㅋㅋㅋ


Flutter에서 웹뷰를 쓸려면, 플러그인을 설치해야 한다.


Flutter내부적으로 구현하지 못하고, 플러그인을 쓴다.


그다지 기쁘진 않다.


이럴거면 구글은 왜 Flutter를 만들었는지... 모르겠다.

만들어져 있는 경우엔 쉽게 쉽게 할 수는 있다.


하지만, 조금이라도 부족하면 어렵다.


언어간 이동을 하면서 이중 네이티브언어(Kotlin ,Swift)를 포팅하고 해야하기 때문에

'

많이 힘들다.


일단 플러그인을 검색하면 ... 먼저 Flutter WebView가 보인다.


하지만, 이건 좀 쓰기가 참...


post로 보내는 기능을 찾을 수 없고... 뭐가 Developer Preview가 지금 나온 버전이다.


흠.... 이걸 꼭 써야되나란... 생각이 든다.



그래서... 검색을 하자...


POST기능이 필요해서 좀 찾자...  InAppWebView가 보였다.



쭈욱 빠르게 스캔한 후, 되겠다 싶어서... 


짰다.


안드로이드 X지원을 해야하고.... 여러가지 제약사항등을 다 만족하게끔 프로젝트를 바꾼지 오래되엇다.


바로 넘어갔다.


그리고, 


xml, 세팅과  yaml세팅을 다 하고...


넘어가면.,.,.



import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  InAppWebViewController controller;

  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('InAppWebView Example'),
      ),
      body: InAppWebView(
        initialUrl: "wwww.google.com",
        onLoadStop: (InAppWebViewController controller, String url) {
          if (url == "wwww.google.com") {
            //갈곳을 정하고
            print("wwww.google.com에 맞는 행동합니다.");
            //controller...XXXXX
          } else if (url == "wwww.daum.net") {
            print("daum.net에 맞는 행동");
          }
        },
        onWebViewCreated: (InAppWebViewController controller) {
          this.controller = controller;
        },
      ),
    );
  }
}


이렇게 짜면 걍 깨끗하게 끝난다. 왠만한 한건 다 끝이다.


그리고 java스크립트로 주고 받는 것도 구현이 가능하다.

 


그리고, 클라이언트에서 자바스크립트로 태그조작해주니 서버쪽에서 엄청 좋아한다.


태그나 혹은 자바스크립트 명령어가 안되는 경우가 가끔 있는데...이건 좀 찾아봐야겠다.