Dart Libraries & Frameworks

Exploring Dart's ecosystem of libraries and frameworks

📚 What are Dart Libraries & Frameworks?

Dart libraries and frameworks provide pre-built functionality to accelerate development. They offer reusable code, tools, and structures for building applications efficiently across different platforms and use cases.


// Import a library to use its functionality
import 'dart:core';
import 'package:flutter/material.dart';

void main() {
  print('Hello from Dart libraries!');
}
                                    

Output:

Hello from Dart libraries!

Types of Dart Libraries

🎯

Core Libraries

Built-in libraries included with Dart

import 'dart:core';
import 'dart:async';
import 'dart:io';
📦

Package Libraries

External packages from pub.dev

import 'package:http/http.dart';
import 'package:json_annotation/json_annotation.dart';
🏗️

Frameworks

Complete development frameworks

// Flutter for mobile apps
import 'package:flutter/material.dart';

// AngularDart for web apps
import 'package:angular/angular.dart';
🔧

Custom Libraries

Your own reusable code modules

// lib/my_utils.dart
library my_utils;

String formatName(String name) {
  return name.toUpperCase();
}

🔹 Popular Dart Frameworks

Major frameworks built with Dart:

🔸 Flutter (Mobile & Desktop)

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter App')),
        body: Center(child: Text('Hello Flutter!')),
      ),
    );
  }
}

🔸 AngularDart (Web)

import 'package:angular/angular.dart';

@Component(
  selector: 'my-app',
  template: '

{{title}}

', ) class AppComponent { String title = 'Hello AngularDart!'; }

🔹 Using External Packages

Add packages to your pubspec.yaml file:

name: my_app
dependencies:
  http: ^0.13.5
  json_annotation: ^4.8.1
  
dev_dependencies:
  test: ^1.21.0

Then import and use them:

import 'package:http/http.dart' as http;
import 'dart:convert';

Future fetchData() async {
  final response = await http.get(
    Uri.parse('https://api.example.com/data')
  );
  
  if (response.statusCode == 200) {
    final data = json.decode(response.body);
    print('Data: $data');
  }
}

🔹 Creating Custom Libraries

Organize your code into reusable libraries:

// lib/math_utils.dart
library math_utils;

/// Calculate the area of a circle
double circleArea(double radius) {
  return 3.14159 * radius * radius;
}

/// Calculate factorial of a number
int factorial(int n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}

// main.dart
import 'lib/math_utils.dart';

void main() {
  print('Circle area: ${circleArea(5)}');
  print('Factorial of 5: ${factorial(5)}');
}

Output:

Circle area: 78.53975

Factorial of 5: 120

🧠 Test Your Knowledge

Which command is used to get external packages in Dart?