0% found this document useful (0 votes)
82 views

Webview in Flutter Example 4

This document provides instructions for creating a webview example in Flutter. It explains how to create a new Flutter project, add the webview plugin, create a WebViewContainer widget to host the webview, create a Home screen with a button to launch the webview, and modify main.dart to launch the app. The webview will display the specified URL when the button is tapped. Additional documentation is provided on how to create a dynamic ListView in Flutter connected to an SQLite database.

Uploaded by

Eduardo Perdomo
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
82 views

Webview in Flutter Example 4

This document provides instructions for creating a webview example in Flutter. It explains how to create a new Flutter project, add the webview plugin, create a WebViewContainer widget to host the webview, create a Home screen with a button to launch the webview, and modify main.dart to launch the app. The webview will display the specified URL when the button is tapped. Additional documentation is provided on how to create a dynamic ListView in Flutter connected to an SQLite database.

Uploaded by

Eduardo Perdomo
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Webview in Flutter Example

Ecco Suprastyo

May 29, 2019·4 min read

You can see FULL SECTION this article in


this http://camellabs.com/webview-in-flutter-example/.

The Example will show about webview in flutter


example. This article will creating a simple application
using Flutter embed webview. You can try this tutorial about
flutter login example step by step. You can read other article with
flutter in this section :

 Create Navigation Drawer in Fluter

 How To Create Listview in Flutter Dynamic

First, we must create a project using Visual Studio Code software.


Here’s how to create a new project using Visual Studio Code:

1. Invoke View > Command Palette.

2. Type “flutter”, and select the Flutter: New Project.


3. Enter a project name, such as “webview”, and press Enter.

4. Create or select the parent directory for the new project folder.

5. Wait for project creation to complete and the main.dart file to


appear.

This example using webview flutter plugin webview_flutter:


^0.3.3. Edit file pubspec.yaml in your directory should look
something like and then update webview flutter package.
name: webview
description: A new Flutter project.# The following defines the
version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in
flutter
# build by specifying --build-name and --build-number,
respectively.
# In Android, build-name is used as versionName while build-number
used as versionCode.
# Read more about Android versioning at
https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while
build-number used as CFBundleVersion.
# Read more about iOS versioning at
#
https://developer.apple.com/library/archive/documentation/General/R
eference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1environment:
sdk: ">=2.1.0 <3.0.0"dependencies:
flutter:
sdk: flutter # The following adds the Cupertino Icons font to
your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
webview_flutter: ^0.3.3dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec# The
following section is specific to Flutter.
flutter: # The following line ensures that the Material Icons font
is
# included with your application, so that you can use the icons
in
# the material Icons class.
uses-material-design: true # To add assets to your application,
add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg # An image asset can refer to one or
more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # For
details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # To add
custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have
a
# "family" key with the font family name, and a "fonts" key with
a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages

You must use flutter webview container for custom widget, create
file with name web_view_container.dart like below :
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';class
WebViewContainer extends StatefulWidget {
final url; WebViewContainer(this.url); @override
createState() => _WebViewContainerState(this.url);
}class _WebViewContainerState extends State<WebViewContainer> {
var _url;
final _key = UniqueKey(); _WebViewContainerState(this._url);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: [
Expanded(
child: WebView(
key: _key,
javascriptMode: JavascriptMode.unrestricted,
initialUrl: _url))
],
));
}
}

We need Home Screen to show single button that opens a URL.


Create file with name Home.dart and you can put your link in
this file.
import 'package:flutter/material.dart';
import 'web_view_container.dart';class Home extends StatelessWidget
{
final _links = ['https://camellabs.com']; @override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: _links.map((link) => _urlButton(context,
link)).toList(),
))));
} Widget _urlButton(BuildContext context, String url) {
return Container(
padding: EdgeInsets.all(20.0),
child: FlatButton(
color: Theme.of(context).primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 50.0,
vertical: 15.0),
child: Text(url),
onPressed: () => _handleURLButtonPress(context, url),
));
} void _handleURLButtonPress(BuildContext context, String url) {
Navigator.push(context,
MaterialPageRoute(builder: (context) =>
WebViewContainer(url)));
}
}

And then modify file main.dart to completed like below :


import 'package:flutter/material.dart';
import 'home.dart';void main() => runApp(MyApp());class MyApp
extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Web Views',
theme: ThemeData(
primarySwatch: Colors.blue,
fontFamily: "Arial",
textTheme: TextTheme(
button: TextStyle(color: Colors.white, fontSize:
18.0),
title: TextStyle(color: Colors.red))),
home: Home(),
);
}
}

After finish copy the main.dart, runing application and will


show output :
You can see webview in flutter example in Here.

Thank you for reading this article about Webview in Flutter


Example, I hope this article is useful for you. Visit My Github
about Flutter in Here
How To Create Listview in
Flutter Dynamic
Ecco Suprastyo

May 24, 2019·5 min read

This story you can see FULL SECTION in


Here http://camellabs.com/how-to-create-listview-in-flutter-
dynamic/.

The Example will show about builder listview in flutter


dynamic. This article will creating a simple application using
Flutter that is integrated with the SQLite database. You can try
this tutorial about flutter login example step by step. You can read
other article with database connection with flutter in this
section Flutter Login With Database SQLite.

First, we must create a project using Visual Studio Code software.


Here’s how to create a new project using Visual Studio Code:

1. Invoke View > Command Palette.

2. Type “flutter”, and select the Flutter: New Project.


3. Enter a project name, such as “recyclerview”, and press Enter.

4. Create or select the parent directory for the new project folder.

5. Wait for project creation to complete and the main.dart file to


appear.

After the new project is created, create the database file in the
directory application that was created. (e.g
[projectname]/data/[databasename].db.

we must prepare the database using sqlite first. All we have to do


is create a file with the .db extension first.
Edit file pubspec.yaml in your directory should look something
like:
name: recyclerview
description: A new Flutter project.# The following defines the
version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in
flutter
# build by specifying --build-name and --build-number,
respectively.
# In Android, build-name is used as versionName while build-number
used as versionCode.
# Read more about Android versioning at
https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while
build-number used as CFBundleVersion.
# Read more about iOS versioning at
#
https://developer.apple.com/library/archive/documentation/General/R
eference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1environment:
sdk: ">=2.1.0 <3.0.0"dependencies:
flutter:
sdk: flutter # The following adds the Cupertino Icons font to
your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
english_words: ^3.1.0
sqflite: any
path_provider: ^0.4.0

dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec# The
following section is specific to Flutter.
flutter: # The following line ensures that the Material Icons font
is
# included with your application, so that you can use the icons
in
# the material Icons class.
uses-material-design: true
assets:
- data/flutter.db
# To add assets to your application, add an assets section, like
this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg # An image asset can refer to one or
more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # For
details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # To add
custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have
a
# "family" key with the font family name, and a "fonts" key with
a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages

We’re going to need to create entity class with


name fruit.dart in directory [projectname]/lib/which helps us
manage a fruit’s data.
class Fruits {
int _id;
String _name; Fruits(this._name); Fruits.fromMap(dynamic obj) {
this._name = obj['name'];
} String get name => _name; Map<String, dynamic> toMap() {
var map = new Map<String, dynamic>();
map["name"] = _name;
return map;
}
}

And to database_helper.dart like that :


import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/services.dart';
import 'package:recyclerview/fruit.dart';
import 'package:path/path.dart';
import 'dart:async';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';class DatabaseHelper {
static final DatabaseHelper _instance = new
DatabaseHelper.internal();
factory DatabaseHelper() => _instance; static Database _db;
Future<Database> get db async {
if (_db != null) {
return _db;
}
_db = await initDb();
return _db;
} DatabaseHelper.internal(); initDb() async {
Directory documentDirectory = await
getApplicationDocumentsDirectory();
String path = join(documentDirectory.path, "data_flutter.db");

// Only copy if the database doesn't exist


//if (FileSystemEntity.typeSync(path) ==
FileSystemEntityType.notFound){
// Load database from asset and copy
ByteData data = await rootBundle.load(join('data',
'flutter.db'));
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes,
data.lengthInBytes); // Save copied asset to documents
await new File(path).writeAsBytes(bytes);
//} var ourDb = await openDatabase(path);
return ourDb;
}
}

After we create database_helper.dart, next create file for the


query to get data Fruits. The file query.dart like below :
import 'package:recyclerview/fruit.dart';
import 'dart:async';
import 'package:recyclerview/database_helper.dart';class QueryCtr {
DatabaseHelper con = new DatabaseHelper(); Future<List<Fruits>>
getAllFruits() async {
var dbClient = await con.db;
var res = await dbClient.query("fruits");

List<Fruits> list =
res.isNotEmpty ? res.map((c) => Fruits.fromMap(c)).toList()
: null; return list;
}
}

Later, we create main.dart


import 'package:flutter/material.dart';
import 'package:recyclerview/fruit.dart';
import 'package:recyclerview/query.dart';void main() => runApp(new
MyApp());class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: "List in Flutter",
home: new Scaffold(
appBar: new AppBar(
title: Text("List"),
),
body: RandomFruits(),
),
);
}
}class RandomFruits extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new RandomFruitsState();
}
}class RandomFruitsState extends State<RandomFruits> { final
_biggerFont = const TextStyle(fontSize: 18.0);
QueryCtr _query = new QueryCtr(); @override
Widget build(BuildContext context) {
return Scaffold (
appBar: AppBar(
title: Text('Load data from DB'),
),
body: FutureBuilder<List>(
future: _query.getAllFruits(),
initialData: List(),
builder: (context, snapshot) {
return snapshot.hasData ?
new ListView.builder(
padding: const EdgeInsets.all(10.0),
itemCount: snapshot.data.length,
itemBuilder: (context, i) {
return _buildRow(snapshot.data[i]);
},
)
: Center(
child: CircularProgressIndicator(),
);
},
)
);
} Widget _buildRow(Fruits fruit) {
return new ListTile(
title: new Text(fruit.name, style: _biggerFont),
);
}
}

The application can be run to show output below :


For complete source code you can see in Here.

Thank you for reading this article about How To Create


Listview in Flutter Dynamic, I hope this article is useful for
you. Visit My Github about Flutter in Here.

You might also like