Flutter로 WebView 만들어보기

2024. 4. 24. 19:34·Flutter

0️⃣ WebView?

어플리케이션을 쓰다보면 앱 내에서 웹페이지가 동작 할 때가 있다. 예를 들어, 네이버나 유튜브 화면을 띄울 필요가 있을 때 말이다.

 Flutter 내부에서도 그렇게 웹 페이지를 띄울 수가 있는데, 이때 사용하는 라이브러리가 바로 webview_flutter 이다.

https://pub.dev/packages/webview_flutter

 

webview_flutter | Flutter package

A Flutter plugin that provides a WebView widget on Android and iOS.

pub.dev

 

1️⃣ webview_flutter 설치

 $flutter pub add webview_flutter

명령어를 통해 webview_flutter를 설치한다.

내가 사용한 버전은 위와 같다.

2️⃣ 사용방법

webview_flutter docs에 사용방법이 매우 상세하게 잘 나와있어 해당 Readme를 보며 작업해도 크게 무리 없이 작업할 수 있다.

우선, Stateful Widget에 initState() 함수 내에서 작업하면 된다. (Readme에 쓰여진 initState() 함수를 그대로 사용하면 되고, 필요에 따라 로딩이나 에러처리를 할 수 있다.)

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:webview_flutter/webview_flutter.dart';

class WebviewScreen extends StatefulWidget {
  const WebviewScreen({super.key});

  @override
  State<WebviewScreen> createState() => _WebviewScreenState();
}

class _WebviewScreenState extends State<WebviewScreen> {
  WebViewController? controller;

  @override
  void initState(){
    super.initState();

    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setBackgroundColor(const Color(0x00000000))
      ..setNavigationDelegate(
      NavigationDelegate(
        onProgress: (int progress) {},
        onPageStarted: (String url) {},
        onPageFinished: (String url) {},
        onWebResourceError: (WebResourceError error) {},
        // onNavigationRequest: (NavigationRequest request) {
        //   if (request.url.startsWith('https://flutter.dev')) {
        //     return NavigationDecision.prevent;
        //   }
        //   return NavigationDecision.navigate;
        // },
      ),
    )

    ..loadRequest(Uri.parse(
      "https://www.naver.com/"
    ));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: WebViewWidget(
        controller: controller!
      ),
      floatingActionButton: FloatingActionButton(
        backgroundColor: CommonColor.primary,
        child: const Icon(Icons.exit_to_app_sharp),
        onPressed: (){Get.back();},
      ),
    );
  }
}
저작자표시 비영리 변경금지 (새창열림)

'Flutter' 카테고리의 다른 글

Flutter의 아이콘, Symbol 적용하기  (0) 2025.10.24
Flutter 프로젝트 생성하기  (0) 2025.09.11
Flutter의 Widget 종류 : Stateless와 Stateful  (0) 2024.03.27
App Bar의 BackArrow 지우기  (0) 2023.09.20
Flutter M1에서 세팅하기  (0) 2023.09.20
'Flutter' 카테고리의 다른 글
  • Flutter의 아이콘, Symbol 적용하기
  • Flutter 프로젝트 생성하기
  • Flutter의 Widget 종류 : Stateless와 Stateful
  • App Bar의 BackArrow 지우기
깨비도
깨비도
그림 그리는 개발자의 인디게임 생존기 & Flutter 연구소
  • 깨비도
    KKEVi.log()
    깨비도
  • 전체
    오늘
    어제
    • 전체 (105)
      • 인디게임 개발일지 (13)
      • C# (1)
      • Dart (3)
      • Flutter (24)
        • 문제해결 (14)
      • Kotlin (12)
      • Android (22)
        • 문제해결 (11)
      • CS (10)
        • Network (1)
      • 알고리즘 (10)
        • 코딩테스트 (10)
      • etc (10)
        • Git (1)
        • React (1)
  • 블로그 메뉴

    • 방명록
  • 링크

    • 그림 전문 일지
  • 공지사항

  • 인기 글

  • 태그

    Android
    인프챌
    Firebase
    flutter
    네트워크
    stack
    디어마이마리오네트
    IOS
    인디게임
    MacOS
    CS
    Kotlin
    인디게임개발
    게임아트
    context
    DartVM
    DART
    게임개발
    XML
    게임기획
    when
    C#
    플러터
    유니티
    ram
    thread
    OS
    Gemini
    2D아트워크
    Dear.MyMarionette
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
깨비도
Flutter로 WebView 만들어보기
상단으로

티스토리툴바