Flutter Clean Architecture (Part 7) – Network Info

Trần Đình Quý

Flutter Clean Architecture

Connectivity checking là công việc chúng ta sẽ thực hiện trong phần này.

Sau khi chúng ta đã triển khai Repository, chúng ta sẽ triển khai các phần phụ thuộc của nó, bắt đầu với class NetworkInfo được sử dụng để xem thiết bị hiện có được kết nối với mạng hay không.

network_info.dart

abstract class NetworkInfo {
  Future<bool> get isConnected;
}

Cài đặt Connectivity Plus

Chúng ta sẽ sử dụng thư viện bên thứ 3 để kiểm tra application có thực sự online hay không, và trong bài viết này tôi sử dụng connectivity_plus

pubspec.yaml

dependencies:
  connectivity_plus: ^4.0.2

Plugin này cho phép các ứng dụng Flutter khám phá kết nối mạng và tự cấu hình cho phù hợp. Nó có thể phân biệt giữa kết nối di động và kết nối WiFi.

Bây giờ chúng ta biết rằng chúng ta sẽ không sử dụng gói connectivity_plus vì việc nhận thông tin kết nối từ nền tảng không đáng tin cậy, cách khôn ngoan nhất là đổi tên thư mục core/platform thành core/network. Chúng ta cũng sẽ cần sửa lỗi nhập khi triển khai và kiểm tra Repository.

Implementation

Trước hết, cấu trúc thư mục của chúng ta sẽ như sau:

Việc thực hiện thì đơn giản. Chúng tôi sẽ không tạo một file riêng cho nó mà thay vào đó hãy đặt nó ngay bên dưới abstract class.

network_info.dart

import 'package:connectivity_plus/connectivity_plus.dart';

abstract class NetworkInfo {
  Future<bool> get isConnected;
}

class NetworkInfoImpl implements NetworkInfo {
  NetworkInfoImpl(this.connectionChecker);

  final Connectivity connectionChecker;

  @override
  Future<bool> get isConnected async {
    final ConnectivityResult connectivityResult =
        await connectionChecker.checkConnectivity();
    return connectivityResult != ConnectivityResult.none;
  }
}

Như vậy là chúng ta đã hoàn thành được việc check xem ứng dụng có đang online hay không.

Tiếp theo

Chúng tôi đã triển khai lớp NetworkInfo và bạn đã biết lý do tại sao việc tạo các lớp thậm chí có vẻ “vô dụng” chỉ để ẩn mã của bên thứ 3 dưới một interface ổn định lại có ích. Chúng ta vẫn còn phải triển khai Data Sources. Trong phần tiếp theo, chúng ta sẽ làm việc trên Local Data Source với gói shared_preferences.

Phần trước: https://dev.tora-tech.com/flutter-clean-architecture-part-6-implement-repository/

Viết một bình luận