From 97476abb3583300d323742d79dceb8943f392081 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 22 Mar 2021 10:11:25 +0800 Subject: [PATCH] update example app.set logger data listenable. --- CHANGELOG.md | 5 +++ README.md | 5 +-- example/lib/main.dart | 51 ++++++++++++++++------------- lib/src/data/logger_data.dart | 37 ++++++++++++++++----- lib/src/power_logger.dart | 2 -- lib/src/view/dio_response_view.dart | 16 ++++----- lib/src/views/logger_view.dart | 14 ++++++++ 7 files changed, 85 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d6ceb1..eac26e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # CHANGELOG +## [0.1.3] + +* listenable value. +* update example app. + ## [0.1.2] * performance enhanced. diff --git a/README.md b/README.md index 914e724..722febd 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,7 @@ A well log tool on flutter, support Dio and custom type data. * init logger ```dart -Future.delayed( - Duration(milliseconds: 300), - () => PowerLogger.init(context), -); +PowerLogger.start(context); ``` * add data to logger diff --git a/example/lib/main.dart b/example/lib/main.dart index 5987268..6dcf050 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -28,29 +28,17 @@ class _MyHomePageState extends State { @override void initState() { super.initState(); - Dio().get("https://192.168.31.255:8888").catchError((e) { - LoggerData.addData(e); - }); - Dio().get("https://www.baidu.com", queryParameters: {'test': 'test'}).then( - (e) { - LoggerData.addData(e); - }); - Dio().get("https://www.baidu.com/ahefbawfbe.html").catchError((e) { - LoggerData.addData(e); - }); - Dio() - .post("https://www.baidu.com/ahefbawfbe.html", - data: FormData.fromMap({'test': 'test'})) - .catchError((e) { - LoggerData.addData(e); - }); + NetTool.init(); + NetTool.dio.get("https://192.168.31.255:8888"); + NetTool.dio.get("https://www.baidu.com", queryParameters: {'test': 'test'}); + NetTool.dio.get("https://www.baidu.com/ahefbawfbe.html"); + NetTool.dio.post( + "https://www.baidu.com/ahefbawfbe.html", + data: FormData.fromMap({'test': 'test'}), + ); - Dio() - .get( - "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png") - .then((e) { - LoggerData.addData(e); - }); + NetTool.dio.get( + "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"); PowerLogger.start(context); LoggerData.addData('TEST'); } @@ -64,3 +52,22 @@ class _MyHomePageState extends State { ); } } + +class NetTool { + static Dio dio = Dio(); + static init() { + dio.interceptors.add(InterceptorsWrapper( + onRequest: (options) async { + return options; + }, + onResponse: (response) async { + LoggerData.addData(response); + return response; + }, + onError: (DioError e) async { + LoggerData.addData(e); + return e; + }, + )); + } +} diff --git a/lib/src/data/logger_data.dart b/lib/src/data/logger_data.dart index 5f199e8..a92f9c9 100644 --- a/lib/src/data/logger_data.dart +++ b/lib/src/data/logger_data.dart @@ -1,13 +1,15 @@ +import 'package:flutter/foundation.dart'; import 'package:power_logger/power_logger.dart'; /// logger data storage class LoggerData { static int _maxLength = 100; - static List _data = []; - /// the real logger data. - static List get data => _data; + static List get data => _listenableData.value; + + static _LoggerDataNotifer> _listenableData = + _LoggerDataNotifer([]); /// set the logger max number. static setMax(int max) { @@ -17,15 +19,32 @@ class LoggerData { /// add data to logger static addData(dynamic data) { if (PowerLogger.debug) { - if (_data.length < _maxLength) - _data.insert(0, data); - else { - _data.removeLast(); - _data.insert(0, data); + if (_listenableData.value.length < _maxLength) { + _listenableData.value.insert(0, data); + _listenableData.notify(); + } else { + _listenableData.value.removeLast(); + _listenableData.value.insert(0, data); + _listenableData.notify(); } } } /// clear all logger - static clear() => _data.clear(); + static clear() => _listenableData.value.clear(); + + /// add data listener + static addListener(Function listener) { + _listenableData.addListener(listener); + } + + /// remove data listener + static removeListener(Function listener) { + _listenableData.removeListener(listener); + } +} + +class _LoggerDataNotifer extends ValueNotifier { + _LoggerDataNotifer(value) : super(value); + notify() => this.notifyListeners(); } diff --git a/lib/src/power_logger.dart b/lib/src/power_logger.dart index 36e4bb2..00306ba 100644 --- a/lib/src/power_logger.dart +++ b/lib/src/power_logger.dart @@ -1,5 +1,3 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:power_logger/src/widgets/logger_fab.dart'; diff --git a/lib/src/view/dio_response_view.dart b/lib/src/view/dio_response_view.dart index 721c9b6..a0f8e82 100644 --- a/lib/src/view/dio_response_view.dart +++ b/lib/src/view/dio_response_view.dart @@ -132,14 +132,14 @@ class _DioResponseViewState extends State { ); } - _buildSingleText(String title, String data) { - return data == null || data.length == 0 - ? SizedBox() - : BoxView( - title: Text('Params'), - child: SelectableText(data.toString()), - ); - } + // _buildSingleText(String title, String data) { + // return data == null || data.length == 0 + // ? SizedBox() + // : BoxView( + // title: Text('Params'), + // child: SelectableText(data.toString()), + // ); + // } @override void initState() { diff --git a/lib/src/views/logger_view.dart b/lib/src/views/logger_view.dart index 2c265e3..f6a63c5 100644 --- a/lib/src/views/logger_view.dart +++ b/lib/src/views/logger_view.dart @@ -10,6 +10,20 @@ class LoggerView extends StatefulWidget { } class _LoggerViewState extends State { + updateList() => setState(() {}); + + @override + void initState() { + super.initState(); + LoggerData.addListener(updateList); + } + + @override + void dispose() { + LoggerData.removeListener(updateList); + super.dispose(); + } + @override Widget build(BuildContext context) { return ListView.builder(