Flutter for web: The comprehensive guide to create and run a Web application

Flutter has been created to give developers a fast development framework, and to users, a great engaging and fast experience. And, flutter web app is a code-compatible implementation of Flutter that is rendered using standards-based web technologies: HTML, CSS and JavaScript. With Flutter web app, you can compile existing Flutter code written in Dart into a client experience which can be embedded in the browser and deployed to any web server. You can use all the features of Flutter, and you don’t need a browser plug-in.

Flutter for web development

How to set up

In order to develop for web you need flutter 1.5 and above, it enable support for targeting flutter web app, including Dart compilation to JavaScript. To use the Flutter SDK with the flutter_web preview make sure you have upgraded Flutter to at least v1.5.4 by running flutter upgrade from your machine.

$ flutter upgrade

To install the webdev package, which provides the build tools for flutter web app, run the following:

$ flutter packages pub global activate webdev

Ensure that the $HOME/.pub-cache/bin directory is in your path, and then you may use the webdev command directly from your terminal.

In-order to add$HOME/.pub-cache/bin to your path, open path file by running below mentioned command from your terminal.

$ touch ~/.bash_profile; open ~/.bash_profile

It will open the file with TextEdit, make sure to have a reference to all components in your PATH and save it. If you open it again you’ll find your edits.

flutter sdk: 
export PATH=$PATH:[Path to your flutter directory]/flutter/bindart sdk:
export PATH=$PATH:[Path to your flutter directory]/flutter/bin/cache/dart-sdk/binwebdev:
mac:
export PATH=$PATH:$HOME/.pub-cache/bin
windows: %USERPROFILE%\AppData\Roaming\Pub\Cache\bin
linux: $HOME/flutter/.pub-cache/bin

Note: if you have problems configuring webdev to run directly, try:
flutter packages pub global run webdev [command].

Now that we are done setting up our development environment.

Start developing Flutter web app

Once the environment setup is done, you are gonna be needing an IDE to start developing for web. Choose your favourite IDE and follow the step by step instructions available below:

Visual Studio Code

Visual Studio Code supports Flutter web development with the v3.0 release of the Flutter extension.

  • install the Flutter SDK
  • set up VS Code
  • configure VS Code to point to your local Flutter SDK
  • run the Flutter: New Web Project command from VS Code
  • after the project is created, run your app by pressing F5 or “Debug -> Start Debugging”
  • VS Code will use the webdev command-line tool to build and run your app; a new Chrome window should open, showing your running app

Using Android Studio

Flutter web app, in Android Studio, there is no direct plug-in or template to create a web project, instead you can use Stagehand package that helps you get your web project set up. Stagehand is basically a Dart project scaffolding generator, inspired by tools like Web Starter Kit and Yeoman. In-order to create a web project with Stagehand, you need tofollow the instructions below:

  • install the Flutter SDK
  • set up your copy of Android Studio
  • configure Android Studio to point to your local Flutter SDK
  • now run the following command from your terminal to install Stagehand $ pub global activate stagehand
  • once Stagehand is installed, you can use it to generate a project skeleton into the desired directory. As an example, here is how you create a simple web project with Stagehand:
$ mkdir flutter_web_project
$ cd flutter_web_project
$ stagehand web-simple

And to list all of the project templates:

$ stagehand
  • once the project is created, open that project in Android Studio and add the following dependencies in your pubspec.yaml file
dependencies:
flutter_web: any
flutter_web_ui: any

dev_dependencies:
# Enables the `pub run build_runner` command
build_runner: ^1.1.2
# Includes the JavaScript compilers
build_web_compilers: ^1.0.0

# flutter_web packages are not published to pub.dartlang.org
# These overrides tell the package tools to get them from GitHub
dependency_overrides:
flutter_web:
git:
url: https://github.com/flutter/flutter_web
path: packages/flutter_web
flutter_web_ui:
git:
url: https://github.com/flutter/flutter_web
path: packages/flutter_web_ui
  • run pub get from your terminal, this will download all the necessary packages
  • once done; create a lib folder in the root directory of your Flutter web app project
  • now create amain.dart file in the lib folder and paste the following code in it:
import 'package:flutter_web/material.dart';

void main() => runApp(Text('Hello World', textDirection: TextDirection.ltr));
  • once you are done; open the main.dart file present in web folder and paste the following code in it:
import 'package:fancy_proj/main.dart' as app;
import 'package:flutter_web_ui/ui.dart' as ui;

main() async {
await ui.webOnlyInitializePlatform();
app.main();
}
  • once everything is done, you are ready to test your Flutter web app project. Run your app by typing the following command in your terminal:
$ webdev serve[INFO] Generating build script completed, took 331ms
...
[INFO] Building new asset graph completed, took 1.4s
...
[INFO] Running build completed, took 27.9s
...
[INFO] Succeeded after 28.1s with 618 outputs (3233 actions)
Serving `web` on http://localhost:8080

Open http://localhost:8080 in Chrome and you should see Hello World in red text in the upper-left corner.

Getting (stateless) hot-reload with webdev – Flutter web app

To use webdev with hot-reload, run the following within your Flutter web app project directory:

$ webdev serve --auto restart

You’ll notice a similar output to flutter packages pub run build_runner serve but now changes to your application code should cause a quick refresh of the application on save.

Note: the --hot-reload option is not perfect. If you notice unexpected behaviour, you may want to manually refresh the page.

Note: the --hot-reload option is currently “stateless”. Application state will be lost on reload. We do hope to offer “stateful” hot-reload on the web – we’re actively working on it!

Stagehand templates for Flutter web app

There are many different templates available for Stagehand, a list all project templates are listed below:

  • console-full – A command-line application sample.
  • package-simple – A starting point for Dart libraries or applications.
  • server-shelf – A web server built using the shelf package.
  • web-angular – A web app with material design components.
  • web-stagexl – A starting point for 2D animation and games.

Final Thoughts with Flutter web app

Most important, we see the future of Flutter web app in bright colors. Just be aware that the framework still has some issues. However, they are mostly related to the immaturity of the technology and are likely to become less cumbersome in the future.

Above all, we – ArrowHiTech is proud to be one of the most well-established outsourcing companies all around the world. With over 14 years of experience, we can provide the Flutter development services for your business

AHT
ArrowHiTech services and products

So, If you have any questions, don’t hesitate to Contact Us.

Tags

Share