A few months ago, Google announced a new operating system named Fuchsia. It was my first time to hear about Dart, which is the primary programming language for Fuchsia. Dart is a programming language designed by Google. It is used to build the web (Dart webdev), mobile (Flutter) and server (Dart VM) applications. In this article, I will share how to write my first Dart console application with Dynamsoft barcode RESTful web service.
Setting Up the Dart Development Environment
Install Dart SDK, which includes Dart VM, libraries, package manager and more.
Install IDE IntelliJ IDEA. The community edition is free. When launching the IDE first time, click menu File > Settings > Plugins to install Dart plugin.
Dart Console Application with Barcode RESTful Web Service
Create a new console application project:
Using libraries
Here are the required libraries:
import 'dart:io'; import 'dart:convert'; import 'dart:async'; import 'package:http/http.dart' as http;
The dart: scheme is for built-in libraries, and the package: scheme is for external libraries provided by a package manager such as the pub tool.
You may see a prompt message “Target of URI doesn’t exist”. To use the external libraries, open pubspec.yaml and add dependencies:
name: barcode version: 0.0.1 description: A simple console application. dependencies: http:
Then click Get Dependencies to download the libraries.
Read a file and convert bytes to base64
Reading file as bytes is pretty easy:
var bytes = await new File(filename).readAsBytes();
If you have read the Dart tutorial, you may have noticed the code for base64 conversion:
import 'package:crypto/crypto.dart'; String base64 = CryptoUtils.bytesToBase64(bytes);
However, after getting the latest crypto package, I got the error “Undefined name ‘CryptoUtils’”.
I searched Dart APIs for “base64”, and found the following substitute:
import 'dart:convert'; String base64 = BASE64.encode(bytes);
Send JSON to RESTful web service
Construct the JSON data:
String jsonData = '{"image":"$base64","barcodeFormat":234882047,"maxNumPerPage":1}';
The value of barcode format represents all barcode types including Code 39, Code 93, Code 128, Codabar, Interleaved 2 of 5, EAN-8, EAN-13, UPC-A, UPC-E, Industrial 2 of 5, QR code, Datamatrix, and PDF417. I got this value from Dynamsoft barcode web service sample.
Send HTTP request and wait for the responded result:
var response = await http.post(url, headers: {'Content-Type': 'application/json'}, body: jsonData); print("Response status: ${response.statusCode}"); print(response.headers); if (response.statusCode != 200) { print("Server Error !!!"); return; } print("Response body: ${response.body}"); // https://api.dartlang.org/stable/1.21.0/dart-convert/JSON-constant.html Map result = JSON.decode(response.body); print("Barcode result: " + result['barcodes'][0]['displayValue']);
Screenshot
Run the Dart console application with the test barcode image:
Source Code
https://github.com/yushulx/dartlang-barcode-webservice
The post How to Use Dart with Barcode RESTful Web Service appeared first on Code Pool.