Category: Development

  • Create zip file in dart

    Create zip file in dart

    Creating a zip file in Dart is not that hard. Though there are not many packages right now to work with, so far we have only two packages which we can use to create zip, tar and others in dart.

    If you have not installed dart yet please go to my post here.

    Visit Pub Dev where you can find all kinds of packages for Flutter and Dart. Some packages work with both Flutter and Dart but not all of them.

    Go to https://pub.dev/ and search zip you will find these two packages

    1. Archive https://pub.dev/packages/archive, for Dart and Flutter.
    2. Flutter Archive https://pub.dev/packages/flutter_archive for only Flutter project. 

    In our case we will use the Archive package since we are testing in a console application. 

    The Archive library currently supports the following decoders:

    • Zip (Archive)
    • Tar (Archive)
    • ZLib [Inflate decompression]
    • GZip [Inflate decompression]
    • BZip2 [decompression]

    Add Archive package in your project 

    With Dart

    dart pub add archive

    With Flutter

    flutter pub add archive

    Our pubspec.yaml

    name: Create zip file in dart
    description: A sample command-line application to create zip file
    version: 1.0.0
    homepage: https://flutterframework.com/
    
    environment:
      sdk: '>=2.10.0 <3.0.0'
    
    dependencies:
      archive: ^3.1.2
    
    dev_dependencies:
      pedantic: ^1.9.0
      test: ^1.14.4

    Our main zip.dart

    import 'package:zip/zip.dart' as zip;
    
    void main(List<String> arguments) {
      zip.createZip();
    }

    and lib/zip.dart

    import 'dart:io';
    
    import 'package:archive/archive.dart';
    import 'package:archive/archive_io.dart';
    
    void createZip() {
      final logDir = Directory.current.path + '/log';
      final zipLocation = Directory.current.path + '/log.zip';
    
      var encoder = ZipFileEncoder();
      encoder.zipDirectory(Directory(logDir), filename: zipLocation);
    
      // Manually create a zip of a directory and individual files.
      encoder.create(Directory.current.path + '/log2.zip');
      encoder.addFile(File('another_file.txt'));
    
      encoder.close();
    }

    Line number 10 creates a zip file in the destination file(line 8), from line 7 which is a directory containing few txt files.

    You can create more zip file in the same encoder process, line 16 and more file line 17.

    Download the source code from github.com

    Spread the love
  • Install flutter mac by brew

    Flutter got easier to install on any Mac, just install it by home brew. It will install both flutter and dart.

    brew install flutter

    Check version of Flutter

    flutter --version

    Check version of Dart

    dart --version

    Spread the love
  • MySQL and Maria DB connection with Dart language

    MySQL and Maria DB connection with Dart language

    MySQL and Maria DB connection with Dart language

    Connect to MySQL or Maria DB server from Dart is very easy. We just need a couple of packages.

    Create your pubspec.yaml and add mysqli as a dependency. And run

    name: mysql
    description: A sample command-line application.
    # version: 1.0.0
    # homepage: https://www.example.com
    # author: sminrana <[email protected]>
    
    environment:
      sdk: '>=2.0.0 <3.0.0'
    
    dependencies:
      mysql1: ^0.17.1
    
    dev_dependencies:
      test: ^1.0.0
    
    pub get

    Create a file name main.dart which looks like this

    import 'dart:async';
    import 'dart:io';
    
    import 'package:mysql1/mysql1.dart';
    
    Future main() async {
      final conn = await MySqlConnection.connect(ConnectionSettings(
          host: 'localhost', port: 3306, user: 'root', password: '1234', db: 'database_name'));
    
    
      // Create a table
      await conn.query(
          'CREATE TABLE users (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255), email varchar(255), age int)');
    
      // Insert some data
      var result = await conn.query(
          'insert into users (name, email, age) values (?, ?, ?)',
          ['Bob', '[email protected]', 25]);
      print('Inserted row id=${result.insertId}');
    
      // Query the database using a parameterized query
      var results = await conn
          .query('select name, email from users where id = ?', [result.insertId]);
      for (var row in results) {
        print('Name: ${row[0]}, email: ${row[1]}');
      }
    
      // Finally, close the connection
      await conn.close();
    }
    
    

    Here Future main async as an asynchronous dart main function which is required due to async call on line 7, here we must wait for await MySqlConnection to be finished its process.

    Similarly we must wait for the task to be finished on line 12, we create a database table on this line.

    Finally run the code by

    dart main.dart
    Spread the love