Convert your website into an application in a few minutes (FLUTTER WEBVIEW).

Subscribe to my newsletter and never miss my upcoming articles

Hello everyone and welcome to a brand new tutorial series on Flutter. Today we’re going to learn how to convert a website into an app in a few minutes using Flutter.

Image for post

Converting your website into an application only takes a few codes. You might be wondering why would you want to convert your website into an application.

First, According to statistics users spend more time on their phones so building a webview app solves the problem of your customer having to start entering the URL of your website on their browser every time they want to patronize you which 50% of the customer would have forgotten the correct URL.

It curves fraudulent activities: You might be thinking how but in one way or the other it saves you from fraud, imagine your website is a payment platform where customers can enter their card details, okay and the URL of your website is is has been a custom act for hackers to make a close/same like URL to a payment platform so has to collect information they would need so your user now enter if you look close you will see it’s a wrong URL but the most customer won’t know that, So a webview app doesn’t need a user to enter any URL just open the and use.

Third, you can’t actually rely on a webview app for a long time if your business is going far, So you can contact me if you need a real application. But before building a real application for your business you can build a webview application as first just to let the users know that you’re working on something really big.

This how our app will look like.

Enough of the talk lets dive straight into code.

Create a flutter project flutter create flutter webview We will be making use of flutter_webview_plugin as the dependency insert it inside your pubspec.yaml file. In our lib folder open main.dart file and delete the auto-generated code inside and paste this

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

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

class MyApp extends StatelessWidget {
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Google', // change this to your company description
      theme: ThemeData(
      debugShowCheckedModeBanner: false,
      home: WebView(
        title: "Google", // change this to your company name
        selectedUrl: "",  // change the url to your desire url

You will notice I import another file called web.dart just create another file inside the lib folder and call it web.dart inside the file just paste this

// this is the webview code

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

class WebView extends StatefulWidget {
  // so here we're taking the url and title from our main.dart page
  // so we can pass it to the webview page
  final String title;
  final String selectedUrl;
    Key key,
    @required this.title,
    @required this.selectedUrl,
  }) : super(key: key);

  _WebViewState createState() =>
      _WebViewState(title: title, selectedUrl: selectedUrl);

class _WebViewState extends State<WebView> {
  final String title;
  final String selectedUrl;
    @required this.title,
    @required this.selectedUrl,

  Widget build(BuildContext context) {
    return SafeArea(
      child: WebviewScaffold(
        // you can make use of the appbar if you wish to
        // appBar: AppBar(
        //   title: Text('$title'),
        //   centerTitle: true,
        //   elevation: 0,
        // ),
        url: selectedUrl,
        withZoom: false,
        withLocalStorage: true,
        hidden: true,
        initialChild: Container(
          child: Center(
            child: CircularProgressIndicator(),

That’s all and we’re done, so let me explain how the code works, if you’re familiar with flutter you would have to understand some but…

Inside the main.dart file we create the normal route to open a flutter application which is void main()=> runApp(MyApp()); then we move the MyApp class and open the web.dart file we created so I actually pass the URL and title from the start so you will just call the URL in the web.dart file.

So inside the web.dart file, we import the necessary package and create a stateful widget and we ask for the URL and title from the page that is asking for it, after that in the build widget we return a SafeArea so that the webview won’t scatter but maintain its position then inside the safearea we call theWebviewScaffold Widget and pass the necessary thing we need url: selectedUrl the URL we sent then we call and there are many other properties that come with the widget which you can make use of.

Source code 👇

I hope you have learned something, kindly subscribe to the newsletter and appreciate this article as well and feel free to ask a question. Thanks for reading.

Do you want an advanced webview application with more features?

  • Internet check
  • Refresh button
  • Loading animation etc.

Subscribe to the newsletter, share, like and follow.

Advanced Flutter WebView coming up next

🔗 Social Media / Let's Connect 🔗 ==> Github | Twitter | Youtube | WhatsApp | LinkedIn | Patreon | Facebook.

Join the Flutter Dev Community 👨‍💻👨‍💻 ==> Facebook | Telegram | WhatsApp | Signal.

Subscribe to my Telegram channel | Youtube channel | and also to hashnode newsletter in the input box above 👆👆. Thanks

Happy Fluttering 🥰👨‍💻

Comments (2)

Afeez Wojuade's photo

does this mean i can create a webview of any website without the consent of the owner of the website?

Samuel Adekunle's photo

Hmm 🤔 Kind of, but you're not doing any harm to the owner because you can't access anything(e.g database) on the website, webview is just like your normal browser but a webview app-only access one URL you put in your code. As a matter of fact, you're even doing the owner a favor because if many users download the app on the play store, they are only registering on the person's website, not on your app so all the traffic is going to the person website not on your app, although traffic comes to the app if you have many downloads.