# talker_flutter 5.1.20

Advanced error handler and logger package for flutter and dart. App monitoring, logs history, report sharing, custom logs, and etc.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'talker_flutter:5.1.20'
```
Published: 2026-07-28T20:30:22.859642Z
Expected archive SHA-256: 9be092f9661d217edcfb3e2d7e3581a290a69ecfbbd2e19e582ff9d49e7f0e97

Available in cache; verification: upstream_checksum
## Direct dependencies
- flutter: map[sdk:flutter]
- group_button: ^5.3.4
- path_provider: ^2.1.6
- share_plus: ^13.2.0
- talker: ^5.1.20
- web: ^1.1.1

## Package README (untrusted upstream documentation)
<p align="center">
    <a href="https://github.com/Frezyx/talker" align="center">
        <img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/logo/full_logo.png?raw=true" width="250px">
    </a>
</p>
<!-- <h1 align="center">Talker</h1> -->
<h2 align="center"> Advanced error handler and logger for dart and flutter apps</h2>

<p align="center">
    Log your app actions, catch and handle exceptions and errors, show alerts and share log reports
   <br>
   <span style="font-size: 0.9em"> Show some ❤️ and <a href="https://github.com/Frezyx/talker">star the repo</a> to support the project! </span>
</p>

<p align="center">
    <a href="https://github.com/Frezyx/talker" align="center">
        <img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/talker.jpg?raw=true">
    </a>
</p>

<p align="center">
  <a href="https://codecov.io/gh/Frezyx/talker"><img src="https://codecov.io/gh/Frezyx/talker/branch/master/graph/badge.svg" alt="codecov"></a>
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"></a>
    <a href="https://github.com/Frezyx/talker"><img src="https://img.shields.io/github/stars/Frezyx/talker?style=social" alt="GitHub"></a>
<a href="https://pub.dev/packages/talker"><img src="https://pubstats.dev/badges/packages/talker/popularity.svg" alt="PubStats Popularity"></a>
  <br>
  <a href="https://github.com/Frezyx/talker/actions"><img src="https://github.com/Frezyx/talker/workflows/talker/badge.svg" alt="talker"></a>
  <a href="https://github.com/Frezyx/talker_flutter/actions"><img src="https://github.com/Frezyx/talker/workflows/talker_flutter/badge.svg" alt="talker_flutter"></a>
  <a href="https://github.com/Frezyx/talker_logger/actions"><img src="https://github.com/Frezyx/talker/workflows/talker_logger/badge.svg" alt="talker_logger"></a>
</p>

<p align="center">For better understanding how it works check <a href="https://frezyx.github.io/talker">
Web Demo</a> page</p>
<p align="center">
<a href="https://frezyx.github.io/talker">
  <img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/check_web_demo.png?raw=true" width="250px">
</a>
</p>


## Motivation
🚀 &nbsp;The main goal of the project is provide ability to understand where the error occurs in a shortest possible time <br>
✅ &nbsp;Compatible with any state managements <br>
✅ &nbsp;Works with any crash reporting tool (Firebase Crashlytics, Sentry, custom tools, etc.) <br>
✅ &nbsp;Logs UI output of Flutter app on the screen <br>
✅ &nbsp;Allows sharing and saving logs history and error crash reports <br>
✅ &nbsp;Displays alerts for UI exceptions. <br>
✅ &nbsp;Built-in support for dio [HTTP logs](#talker-dio-logger) <br>
✅ &nbsp;Built-in support for [http logs](#talker-http-logger) <br>
✅ &nbsp;Built-in support for [BLoC logs](#talker-bloc-logger) <br>
✅ &nbsp;Built-in support for [Riverpod logs](#talker-riverpod-logger) <br>
✅ &nbsp;Built-in support for [Chopper HTTP logs](#talker-chopper-logger) <br>
✅ &nbsp;Built-in support for [GRPC calls](#talker-grpc-logger) <br>
✅ &nbsp;[Check all features](#features-list)

## Packages
Talker is designed for any level of customization. <br>

| Package                                                                                                | Version                                                                                                                              | Description                                                                                                                                                      | 
|--------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [talker](https://github.com/Frezyx/talker/tree/master/packages/talker)                                 | [![Pub](https://img.shields.io/pub/v/talker.svg?style=flat-square)](https://pub.dev/packages/talker)                                 | Main dart package for logging and error handling                                                                                                                 |
| [talker_flutter](https://github.com/Frezyx/talker/tree/master/packages/talker_flutter)                 | [![Pub](https://img.shields.io/pub/v/talker_flutter.svg?style=flat-square)](https://pub.dev/packages/talker_flutter)                 | Flutter extensions for talker <br>Colored Flutter app logs (iOS and Android), logs list screen, showing error messages at UI out of the box, route observer, etc |
| [talker_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_logger)                   | [![Pub](https://img.shields.io/pub/v/talker_logger.svg?style=flat-square)](https://pub.dev/packages/talker_logger)                   | Customizable pretty logger for dart/flutter apps                                                                                                                 |
| [talker_dio_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_dio_logger)           | [![Pub](https://img.shields.io/pub/v/talker_dio_logger.svg?style=flat-square)](https://pub.dev/packages/talker_dio_logger)           | Best logger for [dio](https://pub.dev/packages/dio) http calls                                                                                                   |                                                                                           |
| [talker_bloc_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_bloc_logger)         | [![Pub](https://img.shields.io/pub/v/talker_bloc_logger.svg?style=flat-square)](https://pub.dev/packages/talker_bloc_logger)         | Best logger for [BLoC](https://pub.dev/packages/bloc) state management library                                                                                   |
| [talker_riverpod_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_riverpod_logger) | [![Pub](https://img.shields.io/pub/v/talker_riverpod_logger.svg?style=flat-square)](https://pub.dev/packages/talker_riverpod_logger) | Best logger for [Riverpod](https://pub.dev/packages/riverpod) state management library
| [talker_chopper_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_chopper_logger)   | [![Pub](https://img.shields.io/pub/v/talker_chopper_logger.svg?style=flat-square)](https://pub.dev/packages/talker_chopper_logger)   | Best logger for [Chopper](https://pub.dev/packages/chopper) http calls                                                                           |
| [talker_http_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_http_logger)         | [![Pub](https://img.shields.io/pub/v/talker_http_logger.svg?style=flat-square)](https://pub.dev/packages/talker_http_logger)         | Best logger for [http](https://pub.dev/packages/http) package                                                                                                    |
| [talker_grpc_logger](https://github.com/Frezyx/talker/tree/master/packages/talker_grpc_logger)         | [![Pub](https://img.shields.io/pub/v/talker_grpc_logger.svg?style=flat-square)](https://pub.dev/packages/talker_grpc_logger)         | Best logger for [grpc](https://pub.dev/packages/grpc) package                                                                                                    |

## Table of contents

- [Motivation](#motivation)
- [Packages](#packages)
- [Talker](#talker)
  - [Get Started](#get-started)
  - [Customization](#⚙️-customization)
    - [Custom logs](#custom-logs)
    - [Change log colors](#change-log-colors)
    - [Change log titles](#change-log-titles)
  - [TalkerObserver](#talkerobserver)
- [Talker Flutter](#talker-flutter)
  - [Get Started](#get-started-flutter)
  - [TalkerScreen](#talkerscreen)
  - [Customization](#customization)
    - [How to set custom color?](#how-to-set-custom-colors)
    - [TalkerScreenTheme](#talkerscreentheme)
  - [TalkerRouteObserver](#talkerrouteobserver)
    - [Navigator](#navigator)
    - [auto_route](#auto_route)
    - [auto_route v7](#auto_route-v7)
    - [go_router](#go_router)
  - [TalkerMonitor](#talkermonitor)
  - [TalkerWrapper](#talkerwrapper)
  - [More Features And Examples](#more-features-and-examples)
- [Integrations](#integrations)
- [Talker Dio Logger](#talker-dio-logger)
  - [Getting Started](#getting-started)
  - [Customization](#customization-dio)
    - [Off/On http request or reposnse logs](#offon-http-request-or-reposnse-logs-dio)
    - [Change http logs colors](#change-http-log-colors-dio)
    - [Filter http logs](#filter-http-logs-dio)
  - [Using with Talker](#using-with-talker-dio)
- [Talker BLoC Logger](#talker-bloc-logger)
  - [Getting Started](#getting-started-1)
  - [Customization](#customization-2)
    - [Off/on events, transitions, changes, creation, close](#offon-events-transitions-changes-creation-close)
    - [Full/truncated state and event data](#fulltruncated-state-and-event-data)
    - [Filter bloc logs](#filter-bloc-logs)
  - [Using with Talker](#using-with-talker-1)
- [Talker Riverpod Logger](#talker-riverpod-logger)
  - [Getting Started](#getting-started-2)
  - [Customization](#customization-3)
    - [Off/on events, add, update, dispose, fail](#offon-events-add-update-dispose-fail)
    - [Full/truncated state data](#fulltruncated-state-data)
    - [Filter riverpod logs](#filter-riverpod-logs)
  - [Using with Talker](#using-with-talker-2)
- [Talker Chopper Logger](#talker-chopper-logger)
  - [Getting Started](#getting-started-3)
  - [Customization](#customization-chopper)
    - [Enable or disable HTTP request or response logs](#change-http-log-colors-chopper)
    - [Print HTTP request curl command](#print-http-request-curl-command-chopper)
    - [Hide sensitive HTTP request headers](#hide-sensitive-http-request-headers-chopper)
    - [Change HTTP logs colors](#change-http-log-colors-chopper)
    - [Filter HTTP logs](#filter-http-logs-chopper)
    - [Using with existing Talker instance](#using-with-existing-talker-instance-chopper)
- [Talker GRPC Logger](#talker-grpc-logger)
  - [Getting Started](#getting-started-4)
  - [Using with Talker](#using-with-talker-3)
  - [Token obfuscation](#token-obfuscation)
- [Crashlytics integration](#crashlytics-integration)
- [Features list](#features-list)
- [Coverage](#coverage)
- [Additional information](#additional-information)
- [Contributors](#contributors)


# Talker

## Get Started
<!-- See all documentation at [talker web site](https://frezyx.github.io/talker/guide/get-started.html#instalation) or -->
Follow these steps to the coolest experience in error handling

### Add dependency
```yaml
dependencies:
  talker: ^5.1.20
```

### Easy to use
You can use Talker instance everywhere in your app <br>
Simple and concise syntax will help you with this

```dart
  import 'package:talker/talker.dart';

  final talker = Talker();

  /// Just logs
  talker.warning('The pizza is over 😥');
  talker.debug('Thinking about order new one 🤔');

  // Handling Exception's and Error's
  try {
    throw Exception('The restaurant is closed ❌');
  } catch (e, st) {
    talker.handle(e, st);
  }

  /// Just logs
  talker.info('Ordering from other restaurant...');
  talker.info('Payment started...');
  talker.good('Payment completed. Waiting for pizza 🍕');
```
More examples you can get [there](https://github.com/Frezyx/talker/blob/master/packages/talker/example/talker_example.dart)

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker/console.jpg?raw=true"></a></p>

## ⚙️ Customization
Configure the error handler and logger for yourself
```dart
final talker = Talker(
    settings: const TalkerSettings(
      /// You can enable/disable all talker processes with this field
      enabled: true,
      /// You can enable/disable saving logs data in history
      useHistory: true,
      /// Length of history that saving logs data
      maxHistoryItems: 100,
      /// You can enable/disable console logs
      useConsoleLogs: true,
    ),
    /// Setup your implementation of logger
    logger: TalkerLogger(),
    ///etc...
  );
```
More examples you can get [here](https://github.com/Frezyx/talker/blob/master/packages/talker/example/talker_example.dart)

### Custom logs

With Talker you can create your custom log message types.<br>
And you have **full customization control** over them!

```dart
class YourCustomLog extends TalkerLog { 
    YourCustomLog(String super.message); 

    /// Log title 
    static get getTitle => 'Custom';

    /// Log key 
    static get getKey => 'custom_log_key';

    /// Log color 
    static get getPen => AnsiPen()..yellow(); 

    /// The following overrides are required because the base class expects instance getters,
    /// but we use static getters to allow for easy customization and reuse of colors, titles, and keys.
    /// This approach works around limitations in the base class API, which does not support passing custom values
    /// directly to the constructor or as parameters, so we override the instance getters to return the static values.
    @override 
    String get title => getTitle; 

    @override 
    String get key => getKey; 

    @override 
    AnsiPen get pen => getPen; 
 } 

final talker = Talker();
talker.logCustom(YourCustomLog('Something like your own service message'));
```

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/logger/custom_log.png?raw=true"></a></p>

### Change log colors

Starting from version 4.0.0, you have the ability to fully customize all logs colors. You can set **your own color for any type of logs**. For example, you can choose red for HTTP responses and green for errors—whatever suits your preference 😁

The map is now structured as `{String: AnsiPen}`.

### String Key
The `String` key serves as an identifier for a specific log type (e.g., HTTP, error, info, etc.). 
- Default log types are accessible via the `key` field in the `TalkerLogType` enum.
- Developers can also define **custom log pen** by providing their own string keys, like `'custom_log_key'`.

```dart
final talker = Talker(
  settings: TalkerSettings(
    colors: {
      // Colors for default log types can be defined with AnsiPen
      TalkerLogType.httpResponse.key: AnsiPen()..red(),
      TalkerLogType.error.key: AnsiPen()..green(),
      TalkerLogType.info.key: AnsiPen()..blue(),

      // Custom Logs can be defined

      // ... from the custom log's key name
      'custom_log_key': AnsiPen()..yellow(),

      // ... or from the variable
      YourCustomLog.getKey: AnsiPen()..yellow(),

      // ... or using the variable and the previously defined custom color for conformity
      YourCustomLog.getKey: YourCustomLog.getPen
    },
  ),
);
```

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/logger/custom_logs_colors.jpg?raw=true"></a></p>

Talker have default color scheme. You can check it in [TalkerSettings](https://github.com/Frezyx/talker/blob/master/packages/talker/lib/src/settings.dart) class

### Change log titles

Starting from version 4.0.0, you have the ability to fully customize all logs titles. You can set **your own title for any type of logs**.

The map is now structured as `{String: AnsiPen}`.

### String Key
The `String` key serves as an identifier for a specific log type (e.g., HTTP, error, info, etc.). 
- Default log types are accessible via the `getKey` field in the `TalkerLogType` enum.
- Developers can also define **custom log title** by providing their own string keys, like `'custom_log_key'`.

```dart
final talker = Talker(
  settings: TalkerSettings(
    titles: {
      // Titles for default log types can be defined with strings
      TalkerLogType.exception.key: 'Whatever you want',
      TalkerLogType.error.key: 'E',
      TalkerLogType.info.key: 'i',

      // Custom Logs can be defined

      // ... from the custom log's key name
      'custom_log_key': "new custom title!",

      // ... or from the variable
      YourCustomLog.getKey: "new custom title!",

      // ... or using the variable and the previously defined custom title for conformity
      YourCustomLog.getKey: YourCustomLog.getTitle      
    },
  ),
);
```

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/logger/custom_log_titles.png?raw=true"></a></p>

Talker have default titles scheme. You can check it in [TalkerSettings](https://github.com/Frezyx/talker/blob/master/packages/talker/lib/src/settings.dart) class

## TalkerObserver

TalkerObserver is a mechanism that allows observing what is happening inside Talker from the outside.

```dart
import 'package:talker/talker.dart';

class ExampleTalkerObserver extends TalkerObserver {
  ExampleTalkerObserver();

  @override
  void onError(TalkerError err) {
    /// Send data to your error tracking system like Sentry or backend
    super.onError(err);
  }

  @override
  void onException(TalkerException exception) {
    /// Send Exception to your error tracking system like Sentry or backend
    super.onException(exception);
  }

  @override
  void onLog(TalkerDataInterface log) {
    /// Send log message to Grafana or backend
    super.onLog(log);
  }
}

final observer = ExampleTalkerObserver();
final talker = Talker(observer: observer);
```

You can use it to transmit data about logs to external sources such as **[Crashlytics](#crashlytics-integration)**, **Sentry**, **Grafana**, or your own analytics service, etc.

# Talker Flutter

## Get Started Flutter

Talker Flutter is an extension for the Dart Talker package that adds extra functionality to make it easier for you to handle logs, errors, and exceptions in your Flutter applications.

### Add dependency
```yaml
dependencies:
  talker_flutter: ^5.1.20
```

### Setup

```dart
import 'package:talker_flutter/talker_flutter.dart';

final talker = TalkerFlutter.init();

// Handle exceptions and errors
try {
  // your code...
} catch (e, st) {
    talker.handle(e, st, 'Exception with');
}

// Log your app info
talker.info('App is started');
talker.critical('❌ Houston, we have a problem!');
talker.error('🚨 The service is not available');
```

### ❗️ Log messages integrity
Most of flutter logging packages either cut messages in the console, or cant dope colored messages in the iOS console. But Talker is not one of them...

Talker uses the optimal method for logging depending on the Operating system on which it runs

But to do this, you need to use the initialization given in the example. Only with TalkerFlutter.init() 

As result of this method you will get the same instance of Talker as when creating it through the Talker() constructor but with logging default initialization

## TalkerScreen 
Often you need to check what happening in the application when there is no console at hand. <br>
There is a TalkerScreen widget from [talker_flutter](https://pub.dev/packages/talker_flutter) package for this situations.<br>

For better understanding how it works check [Web Demo](https://frezyx.github.io/talker) page

| <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/start.png?raw=true" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/filter.png?raw=true" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/actions.png?raw=true" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/settings.png?raw=true" width="250px"></a></p> |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| TalkerScreen | TalkerFilter | TalkerActions | TalkerSettings |

### Easy to use
You can use TalkerScreen everywhere in your app<br>
At Screen, BottomSheet, ModalDialog, etc...

```dart
import 'package:talker_flutter/talker_flutter.dart';

final talker = TalkerFlutter.init();

Navigator.of(context).push(
  MaterialPageRoute(
    builder: (context) => TalkerScreen(talker: talker),
  )
);
```
See more in TalkerScreen [usage example](https://github.com/Frezyx/talker/blob/master/packages/talker_flutter/example/lib/main.dart)

## Customization

Starting from version 4.0.0, you have the ability to fully customize your TalkerScreen display. You can set **your own color for any type of logs**. For example, you can choose red for HTTP responses and green for errors—whatever suits your preference 😁

| <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/customization/custom_logs4.png?raw=true" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/customization/custom_logs1.png" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/customization/custom_logs2.png?raw=true" width="250px"></a></p> | <p align="left"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/customization/custom_logs3.png?raw=true" width="250px"></a></p> |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |

### How to set custom colors ?

To set your custom colors, you need to pass a TalkerScreenTheme object to the TalkerScreen constructor, with a Map containing the desired colors. 

The Map is structured as **{log type: color}**. **TalkerLogType** is an identifier for a specific log type (e.g., HTTP, error, info, etc.), and each log type in Talker has its own field in the enum.

```dart
import 'package:talker_flutter/talker_flutter.dart';

final talker = TalkerFlutter.init();

TalkerScreen(
  talker: talker,
  theme: const TalkerScreenTheme(
    logColors: {

      // Default log type colors can be overridden from the color object
      TalkerLogType.httpResponse.key: Color(0xFF26FF3C),
      // ... or from flutter material colors
      TalkerLogType.error.key: Colors.redAccent,
      // ... or from ARGB values
      TalkerLogType.info.key: Color.fromARGB(255, 0, 255, 247),

      // Custom logs can override their terminal colors 
      
      // ... using the key string
      'custom_log_key': Colors.green,
      
      // ... or from the variable
      YourCustomLog.getKey: Colors.green,

      // ... but they cannot use the previously defined color from the custom log object,
      // ... because flutter doesn't display ansi colors in widgets.
      // ... However, you can use material colors, the color object, or ARGB values for them
      YourCustomLog.getKey: Color(0xFF26FF3C)
    },
  )
)
```

### TalkerScreenTheme

You can set custom backagroud, card and text colors for  TalkerScreen with TalkerScreenTheme

```dart
TalkerScreenTheme(
  cardColor: Colors.grey[700]!,
  backgroundColor: Colors.grey[800]!,
  textColor: Colors.white,
  logColors: {
    /// Your logs colors...
  },
)
```

## TalkerRouteObserver
Observer for a navigator.<br>
If you want to keep a record of page transitions in your application, you've found what you're looking for.

You can use TalkerRouteObserver with **any routing package**<br>
From auto_route to basic Flutter Navigator

### Navigator

```dart
final talker = Talker();

MaterialApp(
  navigatorObservers: [
    TalkerRouteObserver(talker),
  ],
)
```

### auto_route

```dart
final talker = Talker();

MaterialApp.router(
  routerDelegate: AutoRouterDelegate(
    appRouter,
    navigatorObservers: () => [
      TalkerRouteObserver(talker),
    ],
  ),
),
```

### auto_route v7

```dart
final talker = Talker();

MaterialApp.router(
  routerConfig: _appRouter.config(
    navigatorObservers: () => [
      TalkerRouteObserver(talker),
    ],
  ),
),
```

### go_router

```dart
final talker = Talker();

GoRouter(
  observers: [TalkerRouteObserver(talker)],
)
```


## TalkerMonitor 
If you want to check the status of your application in a short time<br> 
**TalkerMonitor** will be the best solution for you 

Monitor is a filtered quick information about http requests, exceptions, errors, warnings, etc... count

You will find Monitor at the TalkerScreen page

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/monitor.jpg?raw=true"></a></p>

For better understanding how it works check [Web Demo](https://frezyx.github.io/talker) page

## TalkerWrapper
In addition 
talker_flutter is able to show default and custom error messages and another status messages via TalkerWrapper

<p align="center"><a href="https://frezyx.github.io/talker" align="center"><img src="https://github.com/Frezyx/talker/blob/dev/docs/assets/v3/talker_flutter/wrapper.jpg?raw=true"></a></p>

```dart
import 'package:talker_flutter/talker_flutter.dart';

final talker = TalkerFlutter.init();

TalkerWrapper(
  talker: talker,
  options: const TalkerWrapperOptions(
    enableErrorAlerts: true,
  ),
  child: /// Application or the screen where you need to show messages
),
```

## More Features And Examples

### Custom UI error messages

In order to understand in more details - you can check this article ["Showing Flutter custom error messages"](https://dev.to/frezyx/showing-flutter-custom-error-messages-109o)

TalkerWrapper [usage example](https://github.com/Frezyx/talker/blob/master/packages/talker_flutter/example/lib/talker_wrapper_example/talker_wrapper_example.dart)

### ShopApp example
See full application example with BLoC and navigation [here](https://github.com/Frezyx/talker/blob/master/examples/shop_app_example)

The talker_flutter package have a lot of another widgets like TalkerBuilder, TalkerListener, etc. You can find all of them in code documentation.

## Integrations

In addition to the basic functionality, talker was conceived as a tool for creating lightweight loggers for the main activities of your application

You can use ready out of the box packages like [talker_dio_logger](https://pub.dev/packages/talker_dio_logger), [talker_bloc_logger](https://pub.dev/packages/talker_bloc_logger) and [talker_riverpod_logger](https://pub.dev/packages/talker_riverpod_logger) or create your own packages.

## Talker Dio Logger

Lightweight, simple and pretty solution for logging if your app use [dio](https://pub.dev/packages/dio) as http-client 

This is how the logs of your http requests will look in the console
![](https://github.com/Frezyx/talker/blob/dev/docs/assets/talker_dio_logger/preview_new.png?raw=true)

### Getting started
Follow these steps to use this package

### Add dependency
```yaml
dependencies:
  talker_dio_logger: ^5.1.20
```

### Usage
Just add **TalkerDioLogger** to your dio instance and it will work

```dart
final dio = Dio();
dio.interceptors.add(
    TalkerDioLogger(
        settings: const TalkerDioLoggerSettings(
          printRequestHeaders: true,
          printResponseHeaders: true,
          printResponseMessage: true,
        ),
    ),
);
```

<a id="customization-dio"></a>
## Customization

To provide hight usage exp here are a lot of settings and customization fields in TalkerDioLoggerSettings. You can setup all wat you want. For example: 

<a id="offon-http-request-or-reposnse-logs-dio"></a>
### Off/on http request or reposnse logs

You can toggle reponse / request printing and headers including

```dart
final dio = Dio();
dio.interceptors.add(
    TalkerDioLogger(
        settings: const TalkerDioLoggerSettings(
          // All http responses enabled for console logging
          printResponseData: true,
          // All http requests disabled for console logging
          printRequestData: false,
          // Reposnse logs including http - headers
          printResponseHeaders: true,
          // Request logs without http - headersa
          printRequestHeaders: false,
        ),
    ),
);
```

<a id="change-http-log-colors-dio"></a>
### Change http logs colors

Setup your custom http-log colors. You can set color for requests, responses and errors in TalkerDioLoggerSettings

```dart
TalkerDioLoggerSettings(
  // Blue http requests logs in console
  requestPen: AnsiPen()..blue(),
  // Green http responses logs in console
  responsePen: AnsiPen()..green(),
  // Error http logs in console
  errorPen: AnsiPen()..red(),
);
```

<a id="filter-http-logs-dio"></a>
### Filter http logs

For example if your app has a private functionality and you don't need to store this functionality logs in talker - you can use filters

```dart
TalkerDioLoggerSettings(
  // All http request without "/secure" in path will be printed in console 
  requestFilter: (RequestOptions options) => !options.path.contains('/secure'),
  // All http responses with status codes different than 301 will be printed in console 
  responseFilter: (response) => response.statusCode != 301,
)
```

<a id="using-with-talker-dio"></a>
## Using with Talker
You can add your talker instance for TalkerDioLogger if your app already uses Talker.
In this case, all logs and errors will fall into your unified tracking system

```dart
final talker = Talker();
final dio = Dio();
dio.interceptors.add(TalkerDioLogger(talker: talker));
```

## Talker BLoC Logger

Lightweight, simple and pretty solution for logging if your app use [BLoC](https://pub.dev/packages/bloc) as state management

This is how the logs of your BLoC's event calling and state emits will look in the console
![](https://github.com/Frezyx/talker/blob/dev/docs/assets/talker_bloc_logger/preview.png?raw=true)

### Getting started
Follow these steps to use this package

### Add dependency
```yaml
dependencies:
  talker_bloc_logger: ^5.1.20
```

### Usage
Just set **TalkerBlocObserver** as Bloc.observer field and it will work

```dart
import 'package:talker_bloc_observer/talker_bloc_observer.dart';

Bloc.observer = TalkerBlocObserver();
```

## Customization

To provide hight usage exp here are a lot of settings and customization fields in TalkerBlocLoggerSettings. You can setup all wat you want. For example:

### Off/on events, transitions, changes, creation, close

You can toggle all bloc event types printing

```dart
Bloc.observer = TalkerBlocObserver(
    settings: TalkerBlocLoggerSettings(
      enabled: true,
      printChanges: true,
      printClosings: true,
      printCreations: true,
      printEvents: true,
      printTransitions: true,
    ),
  );
```

### Full/truncated state and event data

You can choose to have the logs of events and states in the BLoC displayed in the console in either full or truncated form

```dart
Bloc.observer = TalkerBlocObserver(
    settings: TalkerBlocLoggerSettings(
      printEventFullData: false,
      printStateFullData: false,
    ),
  );
```

### Filter bloc logs

You can output logs to the console for specific events and states only, using a filter

```dart
Bloc.observer = TalkerBlocObserver(
    settings: TalkerBlocLoggerSettings(
      // If you want log only AuthBloc transitions
      transitionFilter: (bloc, transition) =>
          bloc.runtimeType.toString() == 'AuthBloc',
      // If you want log only AuthBloc events
      eventFilter: (bloc, event) => bloc.runtimeType.toString() == 'AuthBloc',
    ),
  );
```

## Using with Talker!
You can add your talker instance for TalkerBlocLogger if your Appication already uses Talker.

In this case, all logs and errors will fall into your unified tracking system

```dart
import 'package:talker_bloc_observer/talker_bloc_observer.dart';
import 'package:talker/talker.dart';

final talker = Talker();
Bloc.observer = TalkerBlocObserver(talker: talker);
```

## Talker Riverpod Logger

Lightweight, simple and pretty solution for logging if your app use [Riverpod](https://pub.dev/packages/riverpod) as state management

This is how the logs of your Riverpod's event calling and state emits will look in the console
![](https://github.com/Frezyx/talker/blob/dev/docs/assets/talker_riverpod_logger/preview.png?raw=true)

### Getting started
Follow these steps to use this package

### Add dependency
```yaml
dependencies:
  talker_riverpod_logger: ^5.1.20
```

### Usage
Just pass **TalkerRiverpodObserver** to either `ProviderScope` or `ProviderContainer` and it will work

```dart
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';

runApp(
  ProviderScope(
    observers: [
      TalkerRiverpodObserver(),
    ],
    child: MyApp(),
  )
);
```

or

```dart
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';

final container = ProviderContainer(
  observers: [
    TalkerRiverpodObserver(),
  ],
);
```

## Customization

To provide hight usage exp here are a lot of settings and customization fields in TalkerRiverpodLoggerSettings. You can setup all wat you want. For example:

### Off/on events, add, update, dispose, fail

You can toggle all riverpod event types printing

```dart
TalkerRiverpodObserver(
  settings: TalkerRiverpodLoggerSettings(
    enabled: true,
    printProviderAdded: true,
    printProviderUpdated: true,
    printProviderDisposed: true,
    printProviderFailed: true,
  ),
)
```

### Full/truncated state data

You can choose to have the logs of states in the Riverpod displayed in the console in either full or truncated form

```dart
TalkerRiverpodObserver(
  settings: TalkerRiverpodLoggerSettings(
    printStateFullData: false,
  ),
)
```

### Filter Riverpod logs

You can output logs to the console for specific events only, using a filter

```dart
TalkerRiverpodObserver(
  settings: TalkerRiverpodLoggerSettings(
    // If you want log only AuthProvider events
      eventFilter: (provider) => provider.runtimeType == 'AuthProvider<User>',
  ),
)
```

## Using with Talker!
You can add your talker instance for TalkerRiverpodLogger if your Appication already uses Talker.

In this case, all logs and errors will fall into your unified tracking system

```dart
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';
import 'package:talker/talker.dart';

final talker = Talker();

runApp(
  ProviderScope(
    observers: [
      TalkerRiverpodObserver(
        talker: talker,
      ),
    ],
    child: MyApp(),
  )
);
```

or

```dart
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';
import 'package:talker/talker.dart';

final talker = Talker();

final container = ProviderContainer(
  observers: [
    TalkerRiverpodObserver(
      talker: talker,
    ),
  ],
);
```

# Talker Chopper Logger

A lightweight, straightforward, and visually appealing logging solution for apps that use 
[Chopper](https://pub.dev/packages/chopper) as an HTTP client.

This is how the logs of your http requests will look in the console
![](docs/assets/talker_chopper_logger/preview.png?raw=true)

### Getting Started
Follow these steps to use this package

### Add dependency
```yaml
dependencies:
  talker_chopper_logger: ^5.1.20
```

### Usage
Simply include the **TalkerChopperLogger** in your Chopper client’s interceptors list to enable it.

```dart
final client = ChopperClient(
  /// ... other chopper settings
  interceptors: [
    TalkerChopperLogger(
      settings: const TalkerChopperLoggerSettings(
        printRequestHeaders: true,
        printResponseHeaders: true,
        printResponseMessage: true,
      ),
    ),
  ],
);
```

<a id="customization-chopper"></a>
## Customization

To offer extensive functionality, [TalkerChopperLoggerSettings](packages/talker_chopper_logger/lib/talker_chopper_logger_settings.dart) provides 
numerous configuration settings and customization options. You can adjust everything to suit your needs. For example:

### Enable or disable HTTP request or response logs

You can toggle response / request printing and headers including

```dart
final client = ChopperClient(
  /// ... other chopper settings
  interceptors: [
    TalkerChopperLogger(
      talker: _talker,
      settings: const TalkerChopperLoggerSettings(
        // All HTTP responses enabled for console logging
        printResponseData: true,
        // All HTTP requests disabled for console logging
        printRequestData: false,
        // Response logs including HTTP - headers
        printResponseHeaders: true,
        // Request logs without HTTP - headers
        printRequestHeaders: false,
      ),
    ),
  ],
);
```

<a id="print-http-request-curl-command-chopper"></a>
### Print HTTP request curl command

You can print the curl command for the HTTP request in the console.
This is useful for debugging and testing purposes.

```dart
final client = ChopperClient(
  /// ... other chopper settings
  interceptors: [
    TalkerChopperLogger(
      talker: _talker,
      settings: const TalkerChopperLoggerSettings(
        // Print curl command for HTTP request
        printRequestCurl: true,
      ),
    ),
  ],
);
```

<a id="hide-sensitive-http-request-headers-chopper"></a>
### Hiding sensitive HTTP request headers

You can hide sensitive HTTP request headers such as `Authorization` or `Cookie` in the console logs.
This is useful for security purposes.

```dart
final client = ChopperClient(
  /// ... other chopper settings
  interceptors: [
    TalkerChopperLogger(
      talker: _talker,
      settings: const TalkerChopperLoggerSettings(
        printRequestHeaders: true,
        printResponseHeaders: true,
        // Hide sensitive HTTP request headers
        hiddenHeaders: {
          'authorization',
          'cookie',
        },
      ),
    ),
  ],
);
```

<a id="change-http-log-colors-chopper"></a>
### Change HTTP logs colors

Customize your HTTP log colors by defining specific colors for requests, responses, and errors in 
[TalkerChopperLoggerSettings](packages/talker_chopper_logger/lib/talker_chopper_logger_settings.dart)

```dart
TalkerChopperLoggerSettings(
  // Blue HTTP requests logs in console
  requestPen: AnsiPen()..blue(),
  // Green HTTP responses logs in console
  responsePen: AnsiPen()..green(),
  // Error HTTP logs in console
  errorPen: AnsiPen()..red(),
);
```

<a id="filter-http-logs-chopper"></a>
### Filter HTTP logs

For instance, if your app includes private functionality that you prefer not to log with talker, you can apply filters.

```dart
TalkerChopperLoggerSettings(
  // All http request without "/secure" in path will be printed in console 
  requestFilter: (Request request) => !request.url.path.contains('/secure'),
  // All http responses with status codes different than 301 will be printed in console 
  responseFilter: (Response response) => response.statusCode != 301,
)
```

<a id="using-with-existing-talker-instance-chopper"></a>
## Using with existing Talker instance

If your application already uses Talker, simply inject your Talker instance into TalkerChopperLogger so that all logs 
and errors integrate into your centralized tracking system.

```dart
final talker = Talker();
final client = ChopperClient(
  /// ... other chopper settings
  interceptors: [
    TalkerChopperLogger(
      talker: talker,
      settings: const TalkerChopperLoggerSettings(
        printRequestHeaders: true,
        printResponseHeaders: true,
        printResponseMessage: true,
      ),
    ),
  ],
);
```

## Talker GRPC Logger

### Getting started
Follow these steps to use this package

### Add dependency
```yaml
dependencies:
  talker_grpc_logger: ^5.1.20
```

### Usage

Create an interceptor and instrument your RPC client:

```dart
import 'package:grpc/grpc.dart';
import 'package:talker_grpc_logger/talker_grpc_logger.dart';

void main() {
  late final channel = GrpcOrGrpcWebClientChannel.toSingleEndpoint(
      host: 'localhost',
      port: 50051,
  );

  // Generate your RPC client as usual, and use the interceptor to log the requests and responses.
  late final rpcClient = YourRPCClient(channel, interceptors: [
    TalkerGrpcLogger()
  ]);
}
```


### Using with Talker

Very similar to the section above, just pass a Talker instance to the interceptor:

```dart
import 'package:grpc/grpc.dart';
import 'package:talker_flutter/talker_flutter.dart';
import 'package:talker_grpc_logger/talker_grpc_logger.dart';

void main() {
  // Not mandatory, but useful to see the grpc logs in the Talker screen
  final talker = TalkerFlutter.init();

  // Define port and host as you see fit
  var host = 'localhost';
  var port = 50051;

  // transportSecure needs to be true when talking to a server through TLS.
  // This can be disabled for local development.
  // GrpcOrGrpcWebClientChannel is a channel type compatible with web and native. There
  // are other channel types available for each platform.
  late final channel = GrpcOrGrpcWebClientChannel.toSingleEndpoint(
      host: host,
      port: port,
      transportSecure: host == 'localhost' ? false : true);


  final List<ClientInterceptor> interceptors = [
    TalkerGrpcLogger(talker: talker)
  ];

  // Generate your RPC client as usual, and use the interceptor to log the requests and responses.
  late final rpcClient = YourRPCClient(channel, interceptors: interceptors);
}
```


### Token obfuscation

`TalkerGrpcLogger` will obfuscate bearer tokens by default. It'll look at the
metadata of the request and obfuscate the `authorization` header. It'll look
like `Bearer [obfuscated]` in the logs. It is highly recommended to keep this
option enabled. If you want to disable it, you can pass `obfuscateToken:
false`:

```dart
TalkerGrpcLogger(talker: talker, obfuscateToken: true)
```

## Crashlytics integration

If you add CrashlyticsTalkerObserver to your application, you will receive notifications about all application errors in the Crashlytics dashboard. <br>

Additionally, you can **configure it to send only specific errors** to Crashlytics from within TalkerObserver.

```dart
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:talker/talker.dart';

class CrashlyticsTalkerObserver extends TalkerObserver {
  CrashlyticsTalkerObserver();

  @override
  void onError(err) {
      FirebaseCrashlytics.instance.recordError(
        err.error,
        err.stackTrace,
        reason: err.message,
      );
  }

  @override
  void onException(err) {
      FirebaseCrashlytics.instance.recordError(
        err.exception,
        err.stackTrace,
        reason: err.message,
      );
  }
}

final crashlyticsTalkerObserver = CrashlyticsTalkerObserver();
final talker = Talker(observer: crashlyticsTalkerObserver);
```

## Features list

✅ Logging
- ✅ Filtering

- ✅ Formatting
- ✅ Color logs
- ✅ LogLevels (info, verbose, warning, debug, error, critical, fine, good) 
- ✅ Customization for filtering, formatting and colors
- 🚧 Separation from system's and another flutter logs
- 🚧 Collapsible feature for huge logs
- 🚧 Logs grouping

✅ Errors handling
- ✅ Errors and Exceptions identification
- ✅ StackTrace
- 🚧 Error level identification 

✅ Flutter
- ✅ Application logs sharing

- ✅ HTTP cals logging
- ✅ TalkerScreen - Showing logs list in Flutter app UI
- ✅ TalkerMonitor - A short summary of your application status. How much errors, how much warnings in Flutter app UI
- ✅ TalkerRouteObserver - router logging (which screen is opened, which is closed)
- ✅ TalkerWrapper - Showing errors and exceptions messages at UI
- ✅ TalkerListener - Listen logs data at application UI
- ✅ TalkerBuilder - UI builder to Logs List showing custom UI
- ✅ Android/Windows/Web application logs colors
- ✅ iOS/MacOS application logs colors
- ✅ Talker configuration chnages from TalkerFlutter 

✅ Logs and errors history saving

✅ TalkerObserver - handle all logs, errors, exceptions for integrations (Sentry, Crashlytics)


## Coverage
Error handling is a very important task <br>
You need to choose carefully if you want to use a package for exceptions handling solution <br>
Therefore, the project is 100% covered by tests

[![](https://codecov.io/gh/Frezyx/talker/branch/master/graphs/sunburst.svg)](https://codecov.io/gh/Frezyx/talker/branch/master)

## Additional information
The project is under development and ready for your pull-requests and issues 👍<br>
Thank you for support ❤️

## Contributors

<br>
<div align="center" >
  <p>Thanks to all contributors of this package</p>
  <a href="https://github.com/Frezyx/talker/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=Frezyx/talker" />
  </a>
</div>
<br>

For help getting started with 😍 Flutter, view
[online documentation](https://flutter.dev/docs), which offers tutorials, 
samples, guidance on mobile development, and a full API reference. 

## Changelog
# 5.1.20
- [common] Update CI/CD dependencies
- [common] Update Gradle to v9.6.1
- [common] Update plugin org.jetbrains.kotlin.android to v2.4.10
- [common] Update plugin org.jetbrains.kotlin.android to v2
- [common] Update plugin com.android.application to v9.3.0

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.1.19
- [talker_flutter] Bump path_provider version from 2.1.4 to 2.1.6
- [talker_flutter] Bump share_plus version from 3.0.0 to 3.2.0
- [talker_flutter] Bump web version from 1.1.0 to 1.1.1

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.1.18
- [common] Update plugin com.android.application to v9.2.1
- [common] Update Gradle to v9.5.0

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.1.17
- [talker_flutter] chore: bump share_plus from ^12.0.1 to ^13.0.0

Thanks to [PAzter1101](https://github.com/PAzter1101)

# 5.1.16
- [talker_riverpod_logger] fix: correct Riverpod integration package import in README

Thanks to [Copilot](https://github.com/Copilot)

# 5.1.15
- [talker] Add custom pretty json formatter and strip quotes
- [talker_dio_logger] Add new pretty json formatter 
- [talker_chopper_logger] Add new pretty json formatter 
- [talker_http_logger] Add new pretty json formatter 

Thanks to [westito](https://github.com/westito)

# 5.1.14
- [common] Update plugin com.android.application to v9.0.1
- [common] Update plugin org.jetbrains.kotlin.android to v2.3.10
- [common] Update Gradle to v9.3.1

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.1.13
- [common] Fix trailing curly bracket in stacktrace output

Thanks to [Copilot](https://github.com/Copilot)

# 5.1.12
- [common] Update Gradle to v9.3.0
- [common] Update plugin com.android.application to v9

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.1.11
- [talker_flutter] Update plugin org.jetbrains.kotlin.android to v2.3.0
- [talker_flutter] Update Gradle to v9.2.1

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.1.10
- [talker_flutter] Fix WebAssembly incompatible cast in download_logs_web.dart

Thanks to [JanKubicek](https://github.com/JanKubicek), [Copilot](https://github.com/Copilot)

# 5.1.9
- [talker_flutter] Fix TalkerScreen stack trace display for TalkerLog objects

Thanks to [Copilot](https://github.com/Copilot)

# 5.1.8
- [talker_dio_logger] Add comprehensive test coverage for FormData logging support

Thanks to [Copilot](https://github.com/Copilot)

# 5.1.7
- [talker_grpc_logger] Update dependency grpc to v5.1.0
- [common] Update actions/cache action to v5

Thanks to [apps/renovate](https://github.com/apps/renovate)

# 5.1.6
- [talker_dio_logger] Fix printResponseTime display in TalkerScreen showing incorrect/increasing values

Thanks to [Copilot](https://github.com/Copilot)

# 5.1.5
- [talker_grpc_logger] Update dependency grpc to v5

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.1.4
- [talker_flutter] Fix Share button on iOS bump share_plus dependency to version 12.0.1

Thanks to [Memet18](https://github.com/Memet18)

# 5.1.3
- [talker_flutter] Fix TalkerRouteObserver to log routes created with pageBuilder

Thanks to [copilot-swe-agent[agent]](https://github.com/copilot-swe-agent[agent])

# 5.1.2
- [talker_chopper_logger] Fix tests and update example

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.1.1
- [talker] chore(deps): update kotlin monorepo
- [talker] Bump actions/checkout from 4 to 6

Thanks to [renovate](https://github.com/renovate)

# 5.1.0
- [talker_riverpod_logger] Riverpod 3 mutations support

Thanks to [lucavenir](https://github.com/lucavenir)

# 5.0.2
- [talker_riverpod_logger] Bump riverpod version to 3.0.0
- adopt Riverpod 3 provider observer signatures with ProviderObserverContext
- switch to NotifierProvider.autoDispose and ProviderContainer.test from Riverpod 3 APIs

Thanks to [lucavenir](https://github.com/lucavenir)

# 5.0.1
- [talker_flutter] Bump share_plus version to 12.0.0
- [talker] Fix talker.handle docs to use stack trace before error message

Thanks to [Ali-Toosi](https://github.com/Ali-Toosi)

# 5.0.0
- - [talker_chopper_logger] Release logger for Chopper http clint package
- [talker_grpc_logger] Release logger for gRPC package

- [talker] Add ``registeredKeys`` field into ``TalkerSettings`` for third-party packages
- [talker] Remove deprecated ``titles`` and ``types`` from ``TalkerFilter``
- [talker] Add ``enabledKeys`` and ``disabledKeys`` fields into ``TalkerFilter`` to replace old filtering logic
- [talker] Upgrade **BaseTalkerFilter** class - add new filtering way by **List<String> keys** field
- [talker] Deprecate **titles** and **types** fields from **BaseTalkerFilter**
- [talker_flutter] Add ``TalkerFilter`` configuration on ``TalkerScreen``
- [talker_dio_logger] Add ``TalkerKey``s registration
- [talker_http_logger] Add ``TalkerKey``s registration
- [talker_bloc_logger] Add ``TalkerKey``s registration
- [talker_riverpod_logger] Add ``TalkerKey``s registration
- [talker_dio_logger] Remove unused addonId field from dio_logger
- [talker_dio_logger] Add ``FormData`` parser for request logs data
- [talker_dio_logger] Fix ``FormData``s ``contentType`` field

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.16
- [common] Update dependency lints to v6
- [common] Optimize images

Thanks to [renovatebot](https://github.com/renovatebot)

# 5.0.0-dev.15
- - [talker_grpc_logger] Add test and github workflow

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.14
- - [talker_grpc_logger] Add dart-style documentation

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.13
- [talker_grpc_logger] Initial release with general package version
- [talker] Add grpc keys into `TalkerKey` class

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.12
- - chore(deps): update dependency gradle to v9
- chore(deps): update plugin com.android.application to v8.12.0

Thanks to [renovate](https://github.com/renovate)

# 5.0.0-dev.11
- - [talker_chopper_logger] Add ``TalkerKey``s registration

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.10
- - [talker_chopper_logger] Release logger for Chopper http clint package

Thanks to [techouse](https://github.com/techouse)

# 5.0.0-dev.9
- - [talker_http_logger] Add ``TalkerKey``s registration

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.8
- - [talker] Sync release and prerelease versions

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.7
- - [talker_dio_logger] Fix ``FormData``s ``contentType`` field

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.6
- - [talker_dio_logger] Add ``FormData`` parser for request logs data

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.5
- [talker] Add ``registeredKeys`` field into ``TalkerSettings`` for third-party packages
- [talker] Remove deprecated ``titles`` and ``types`` from ``TalkerFilter``
- [talker] Add ``enabledKeys`` and ``disabledKeys`` fields into ``TalkerFilter`` to replace old filtering logic
- [talker_flutter] Add ``TalkerFilter`` configuration on ``TalkerScreen``
- [talker_dio_logger] Add ``TalkerKey``s registration
- [talker_http_logger] Add ``TalkerKey``s registration
- [talker_bloc_logger] Add ``TalkerKey``s registration
- [talker_riverpod_logger] Add ``TalkerKey``s registration

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.4
- [talker_dio_logger] Remove unused addonId field from dio_logger

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.3
- [talker] Upgrade **BaseTalkerFilter** class - add new filtering way by **List<String> keys** field
- [talker] Deprecate **titles** and **types** fields from **BaseTalkerFilter**

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.2
- [talker] Fix errors and exceptions filtering for observer

Thanks to [Frezyx](https://github.com/Frezyx)

# 5.0.0-dev.1
- [talker] Brand new simplified TalkerKeys API (String Log key)

Thanks to [Frezyx](https://github.com/Frezyx)
# 4.9.3
- [talker] chore(deps): update dependency gradle to v8.14.3
[talker] chore(deps): update plugin com.android.application to v8.11.1

Thanks to [renovate](https://github.com/renovate)

# 4.9.2
- [talker_dio_logger] Add response data converter ``responseDataConverter`` field for ``TalkerDioLoggerSettings``

Thanks to [zhengbomo](https://github.com/zhengbomo)

# 4.9.1
- [talker_http_logger] chore(deps): update plugin org.jetbrains.kotlin.android to v2
- [talker_http_logger] chore(deps): update plugin com.android.application to v8.10.1

Thanks to [renovate](https://github.com/renovate)

# 4.9.0
- [talker_flutter] chore: update share_plus to v11.0.0

Thanks to [jeroenbell](https://github.com/jeroenbell)

# 4.8.4
- [talker_riverpod_logger] add family arguments to the logs

Thanks to [lucavenir](https://github.com/lucavenir)

# 4.8.3
- [talker_riverpod_logger] add an error filter

Thanks to [lucavenir](https://github.com/lucavenir)

# 4.8.2
- [talker] Add `CustomLog` Documentation
- [example] Update plugin com.android.application to v8.10.1
- [example] Update dependency gradle to v8.14.1

Thanks to [MeyerOppelt](https://github.com/MeyerOppelt)

# 4.8.1
- [talker_dio_logger] Add logging of request`s extra

Thanks to [lucavenir](https://github.com/lucavenir)

# 4.8.0
- [talker_flutter] Add custom settings section

Thanks to [zvikarp](https://github.com/zvikarp)

# 4.7.9
- [talker_bloc_logger] show full data of Bloc logs in Flutter Talker

Thanks to [Mooyeee](https://github.com/Mooyeee)

# 4.7.8
- [talker_flutter] fix: respect custom TalkerLogger output in TalkerFlutter.init

Thanks to [techouse](https://github.com/techouse)

# 4.7.7
- [talker_logger] chore: update logger output type for improved clarity

Thanks to [techouse](https://github.com/techouse)

# 4.7.6
- [talker_flutter] fix: propagate `itemsBuilder` to `TalkerView`

Thanks to [AhmedEzio47](https://github.com/AhmedEzio47)

# 4.7.5
- Update example application dependencies

Thanks to [apps/renovate](https://github.com/apps/renovate)

# 4.7.4
- [talker_dio_logger] Add logLevel field to provide in all dIo logs

Thanks to [mylukin](https://github.com/mylukin)

# 4.7.3
- [talker_flutter] Fixed missing info and detailed message for exceptions

Thanks to [salarshad](https://github.com/salarshad)

# 4.7.2
- [talker_dio_logger] Add response time to logs
- Add ``printResponseTime`` field for ``TalkerDioLoggerSettings`` to turn on/off response time printing

Thanks to [troyanskiy](https://github.com/troyanskiy)

# 4.7.1
- [talker_flutter] Fix scroll issue and widget usability with high text scale

Thanks to [federicoviceconti](https://github.com/federicoviceconti)

# 4.7.0
- [talker_flutter] Remove deprecated dart:html
- [talker_logger] Remove deprecated dart:html

Thanks to [Mooyeee](https://github.com/Mooyeee)

# 4.6.14
- [talker] Fix search filtering rules<br>
  Now ``titles && types && searchQuery`` replace ``titles || types || searchQuery`` logic

Thanks to [N1X41](https://github.com/N1X41)

# 4.6.13
- [talker_dio_logger] Fix ``hiddenHeaders`` alters the request headers

Thanks to [amrgetment](https://github.com/amrgetment)

# 4.6.12
- [talker_flutter] Rename conflict extension `firstWhereOrNull` from `collection`

Thanks to [Bogdan778](https://github.com/Bogdan778)

# 4.6.11
- [talker_dio_logger] Add `printResponseRedirects` field into `TalkerDioLoggerSettings` to print Response redirects

Thanks to [federicoviceconti](https://github.com/federicoviceconti)

# 4.6.10
- [talker_flutter] Fix search textfield background color become white in light theme

Thanks to [asadman1523](https://github.com/asadman1523)

# 4.6.9
- [talker] Fix CustomLogs ``pen`` field ignoring by console [issue#313](https://github.com/Frezyx/talker/issues/313)

# 4.6.8
- [talker_dio_logger] Fix substitution of hidden headers ``hiddenHeaders`` field in ``TalkerDioLoggerSettings``

# 4.6.7
- [talker_http_logger] Add settings ``TalkerLoggerSettings`` field to setup http logger settings
- [talker_http_logger] Add ``hiddenHeaders`` field in ``TalkerLoggerSettings`` to hide specific and sensitive http logger headers

Thanks to [Ilushnik](https://github.com/Ilushnik)

# 4.6.6
- [talker_dio_logger] Add ``hiddenHeaders`` field in ``TalkerDioLoggerSettings`` to hide specific and sensitive dio logger headers

Thanks to [Ilushnik](https://github.com/Ilushnik)

# 4.6.5
- [talker_bloc_logger] Bump bloc version to 9.0.0

# 4.6.4
- [talker_flutter] Proper migration of support to the web using both html and wasm
- [talker_flutter] Update example dart sdk version to '>=3.6.0 <4.0.0'

Thanks to [yelmuratoff](https://github.com/yelmuratoff)

# 4.6.3
- [talker_flutter] Correction the import file name in the talker_flutter log downloader web

Thanks to [samanzamani](https://github.com/samanzamani)

# 4.6.2
- [talker_flutter] Migrate downloadLogs export to new js_interop package

# 4.6.1
- [talker_flutter] Add new web api support for download logs file

# 4.6.0
- [talker_flutter] Add support WASM for Flutter Web
- [talker_flutter] Support flutter 3.27, remove deprecations

Thanks to [abdelaziz-mahdy](https://github.com/abdelaziz-mahdy)

# 4.5.6
- [talker_flutter] Add copy functionality for filtered logs

Thanks to [abdelaziz-mahdy](https://github.com/abdelaziz-mahdy)

# 4.5.5
- [talker] Add history logging filter by LogLevel
- [talker_flutter] Fix TalkerScreen does not respect configured LogLevel setting

Thanks to [mylukin](https://github.com/mylukin)

# 4.5.4
- [talker_flutter] Add isLogsExpanded and isLogOrderReversed flags to TalkerScreen widget

Thanks to [Ilushnik](https://github.com/Ilushnik) 

# 4.5.3
- [talker_http_logger] Add HttpErrorLog for wrong http statuses

Thanks to [yelmuratoff](https://github.com/yelmuratoff) 

# 4.5.2
- [talker_flutter] Add fallback Flutter screen log card color by LogLevel

# 4.5.1
- [talker_flutter] Fix mapping LogColors to Flutter Color (Logs screen)

# 4.5.0
More Flexible Interaction with Custom Logs  
- **BREAKING** [talker] Change the type of `colors` parameter in the `TalkerSettings` class from `Map<TalkerLogType, AnsiPen>?` to `Map<String, AnsiPen>?`. Custom colors must now use a string key for log types.  
- **BREAKING** [talker] Change the type of `titles` parameter in the `TalkerSettings` class from `Map<TalkerLogType, String>?` to `Map<String, String>?`. Custom titles must now use a string key for log types.  
- **BREAKING** [talker_flutter] Change the type of `colors` parameter in the **TalkerScreenTheme** class from `Map<TalkerLogType, Colors>?` to `Map<String, Colors>?`. Custom colors must now use a string key for log types.  
- [talker] Add new tests and updated existing ones.  
- [talker] Update the documentation for log customization.

Thanks to [yelmuratoff](https://github.com/yelmuratoff) 

# 4.4.7
- [talker_dio_logger] Make encoder constant private

# 4.4.6
- [talker] Reanme **logTyped** method to **logCustom**
- [talker] Add **Deprecated** annotation for logTyped method

# 4.4.5
- [talker_logger] Add enable option field to control log output (on talker_logger level)

Thanks to [weitsai](https://github.com/weitsai)

# 4.4.4
- [talker_dio_logger] Add enable option field to control log output (on talker_dio_logger level)

Thanks to [weitsai](https://github.com/weitsai)

# 4.4.3
- [talker_http_logger] Bump http_interceptor package version to **2.0.0**

# 4.4.2
- [talker] Fix provide pen color field in log() method
- [talker] Android dependecies actualization and bug fixing in example app code

Thanks to [HE-LU](https://github.com/HE-LU) and [venkat9507](https://github.com/venkat9507)

# 4.4.1
- [talker_flutter] Bump share_plus version to 10.0.1
- [talker_flutter] Bump path_provider version to 2.1.4

# 4.4.0
- [talker] Stable ```TimeFormat``` release (Support of custom time formatting for every talker package)
- [talker_riverpod_logger] Bump version to talker common versions system

# 4.3.5
- [talker_bloc_logger] Setup common time format from talker settings for Bloc logs

# 4.3.4
- [talker_riverpod_logger] Duplicated state logs fixes

Thanks to [ArinFaraj](https://github.com/ArinFaraj)

# 4.3.3
- [talker_bloc_logger] Fix bloc logs TimeFormat

Thanks to [Mooyeee](https://github.com/Mooyeee)

# 4.3.2
- [talker_riverpod_logger] Fix issue with display time inside riverpod package

Thanks to [yelmuratoff](https://github.com/yelmuratoff)

# 4.3.1
- [talker_flutter] Fix showing times on FlutterScreen cards

Thanks to [fieldOfView](https://github.com/fieldOfView)

# 4.3.0
- [talker_flutter] Custom logs timestamp formattings

Thanks to [abdelaziz-mahdy](https://github.com/abdelaziz-mahdy)

# 4.2.4
- [talker_riverpod_logger] Print missing data on TalkerScreen 

Thanks to [yelmuratoff](https://github.com/yelmuratoff)

# 4.2.3
- [talker_riverpod_logger] Include Provider's name in logs output

Thanks to [KoheiKanagu](https://github.com/KoheiKanagu)

# 4.2.2
- [talker_flutter] Support for Flutter 3.22, fix new version deprecations

# 4.2.1
- [talker_dio_logger] Add missing error setting for **TalkerDioLoggerSettings**: 
  - `printErrorData`
  - `printErrorHeaders`
  - `printErrorMessage`
  - `errorFilter`

Thanks to [Ali1Ammar](https://github.com/Ali1Ammar)
  
# 4.2.0
- Initial release of [talker_riverpod_logger](https://pub.dev/packages/talker_riverpod_logger)

Thanks to [jbdujardin](https://github.com/jbdujardin)

# 4.1.5
- [talker_flutter] Bump share_plus version to 9.0.0

# 4.1.4
- [talker_logger] Fix default logs printing method

# 4.1.3
- [talker_flutter] Bump share_plus version to 8.0.2
- [talker_flutter] Bump path_provider version to 2.1.2

# 4.1.2
- [talker_flutter] Bump group_button version to 5.3.4

# 4.1.1
- Fix TalkerLog.generateTextMessage exception info missing

Thanks to [heiha100](https://github.com/heiha100)

# 4.1.0
- Fix Exception and StackTrace is ignored for logs
- Fix typo at the beginning README.md 
- Fix TalkerScreen log type selector text colors

Thanks to [qwadrox](https://github.com/qwadrox) and [Danyalo](https://github.com/Danyalo)

# 4.0.3
- Support web for talker and talker_logger
- Update talker_bloc_logger README.md

Thanks to [melodysdreamj](https://github.com/melodysdreamj) and [MiladAtef](https://github.com/MiladAtef)

# 4.0.2
- Fix inconsistent colors at TalkerScreen
- Add **LogColors** typedef in TalkerTheme ```(Map<TalkerLogType, Color>)```

Thanks to [XanderD99](https://github.com/XanderD99)
# 4.0.1
- Fix talker configure method problems [issue #186](https://github.com/Frezyx/talker/issues/186)

Thanks to [K1yoshiSho](https://github.com/K1yoshiSho)

# 4.0.0
- Add ability to customize **colors** and **titles** of any Talker logs
- Add ability to customize **colors** of any logs in TalkerScreen UI 
- Add **TalkerLogType** enum for clear differentiation of logs by types.
- Update TalkerScreen UI (The interface is now even more user-friendly)
- Huge documentation update
- Make 100% test coverage of **talker_bloc_logger** and **talker_dio_logger**
- Add expand / collapse ability for one log card
- Packages versions synchronization (Now the versions of all core libraries will be identical)
- **BREAKING** TalkerDataInterface deleted (Now base data class is **TalkerData**)

- Fix: Text color not always visible [issue #174](https://github.com/Frezyx/talker/issues/174)
- Add custom title format [issue #170](https://github.com/Frezyx/talker/issues/170)
- Fix: Logger not resets log color [issue #86](https://github.com/Frezyx/talker/issues/86)

Check more details in [documentation](https://github.com/Frezyx/talker)

# 4.0.0-dev.6
- Make 100% tests coverage 
- Update example UI
- Add custom log titles documentation
- Fix TalkerScreen log colors setup
- Fix TalkerScreenTheme textColor providing

# 4.0.0-dev.5
- Huge documentation update
- Update talker_flutter styles
- Add expand / collapse ability for one log card
- Add colors customization examples

# 4.0.0-dev.4
- Add new tests to make 100% coverage
- Fix linter issues

# 4.0.0-dev.3
- Update **talker_logger** settings setup method

# 4.0.0-dev.2
- Fix types and remove unused code

# 4.0.0-dev.1
- First version with Logs keys implementation 
- **BREAKING** TalkerDataInterface deleted
- Add new talker colors customization
- Talker Actions UI updated

# 3.6.0
- Add ability to setup custom history implementation
- Add **abstract class TalkerHistory**
- Add **DefaultTalkerHistory** implementation with basic (previous) functionality by default

Thanks to [Ppito](https://github.com/Ppito)

# 3.5.7
- Add package utils export 

Thanks to [Ppito](https://github.com/Ppito)

# 3.5.6
**talker_bloc_logger**
- Add onCreate, onClose logs
- Add **printClosings** **printCreations** settings fields (false by default)

Thanks to [cem256](https://github.com/cem256)

# 3.5.5
- Add ability to set own ErrorHandler for talker instance

Thanks to [Ppito](https://github.com/Ppito)

# 3.5.4
- Bump share_plus package to 7.2.1

# 3.5.3
- Fix the overflow issue of Talker Monitor

Thanks to [Kabak-Siarhei](https://github.com/Kabak-Siarhei)

# 3.5.2
- Bump talker version to 3.1.4
  - Pad minutes and seconds for DateTime formatter

# 3.5.1
- Add TalkerRouteObsever documentatuion
- Fix share_plus version 7.1.0

# 3.5.0
- Update internal packages versions
-Bump share_plus package to 8.0.0
-Bump path_provider package to 2.1.1

# 3.4.0
- Bump share_plus package to 7.1.0

# 3.3.1
- Update README docs and examples

# 3.3.0
- Support web platform downloading logs 

Thanks to [Kabak-Siarhei](https://github.com/Kabak-Siarhei)

# 3.2.10
- Add TalkerScreenTheme **cardColor** customization field

# 3.2.9
- Fix **appBarleading** showing

# 3.2.8
- Add **appBarleading** field to TalkerScreen and TalkerView constructor

# 3.2.7
- Fix TalkerWrapper error looping

Thanks to [s0nerik](https://github.com/s0nerik)

# 3.2.6
- Fix appbar icon colors
- Rename part of internal classes

# 3.2.5
- Make **controller**, **theme**, **appBarTitle** not required for TalkerView
- Make TalkerScreen Stateless instead of Stateful

# 3.2.4
- Fix AppBar title text color

# 3.2.3
- Add **TalkerView** in package exports

# 3.2.2
- Fix logs expanding and collapsing in TalkerView

# 3.2.1
- Refactor TalkerScreen decomposition 
- Extract TalkerView, TalkerViewAppBar

# 3.2.0
- Rename (fix typo) field **backgroudColor** -> **backgroundColor**
- Fix internal and docs typos 
- Update **talker** version to 3.1.0
- Update **group_button** version to 5.3.2

Thanks to [wcoder](https://github.com/wcoder)

# 3.1.12
- Remove using paddingOf to support old flutter versions

# 3.1.11
- refactor and enhance UI
- Fix typo **bacgroundColor** -> **backgroundColor** in SnackbarContent constructor
- Add the **dismissButtonText** Widget to SnackbarContent
- Add the **dismissButton** Widget to SnackbarContent
- Add the **titleTextStyle** TextStyle to SnackbarContent
- Add the **messageTextStyle** TextStyle to SnackbarContent
- Add an **onPressed** callback to SnackbarContent
- Use paddingOf instead size this method will cause the given [context] to rebuild any time that the [MediaQueryData.padding] property of the ancestor [MediaQuery] changes. Checkout the following PR for more informations about MediaQuery as InheritedModel

Thanks to [jnelle](https://github.com/jnelle)
# 3.1.10
- Update **talker** version to 3.0.5

# 3.1.9
- Add topics in pubspec.yaml

# 3.1.8
- Update **talker** version to 3.0.4

# 3.1.7
- Set the exact size of the text in the search TextField
- Fix large text in search bar

# 3.1.6
- Update **talker** version to 3.0.2

# 3.1.5
- Fix typos in package documentation

Thanks to [vicenterusso](https://github.com/vicenterusso)

# 3.1.4
- Fix TalkerScreen scrolling

# 3.1.3
- Update sdk version to **'>=2.15.0 <4.0.0'**

# 3.1.2
- Make fixed text size in talker data list

# 3.1.1
- Fix TalkerFlutter output initialization

# 3.1.0
- Add **runTalkerZonedGuarded** method to setup handle all 
app unhandled exceptions with one method

Thanks to [zezo357](https://github.com/zezo357)

# 3.0.0

**Lighter, simpler, more powerful**

- Big UI/UX updates. Interacting with logs from the application has become even easier now.
- Rename **TalkerHistoryBuilder** -> **TalkerBuilder**
- Remove old **TalkerBuilder**
- Remove **FlutterTalkerDataInterface** and subclasses instead of **TalkerDataInterface**
- Remove **iconsColor** field from TalkerScreenTheme
- Remove Filter bottom sheet (now this functionality is avaliable at TalkerScreen)

# 3.0.0-dev.12

- Add **TalkerObserver** in **TalkerFlutter** extension constructor

# 3.0.0-dev.11

- Update **talker** version to 3.0.0-dev.13

# 3.0.0-dev.10

- Update **talker** version to 3.0.0-dev.11
- Delete LogLevel.fine deprecation usage in extensions

# 3.0.0-dev.9

- Update TalkerFlutter extension (Remove deprecated fields)
- Update talker version to 3.0.0-dev.10

# 3.0.0-dev.8

- Update README, and pubspec.yaml docs

# 3.0.0-dev.7

- Update talker version to ^3.0.0-dev.8
- Fix TalkerFlutter logs colors for http and bloc logs

# 3.0.0-dev.6

- Update **TalkerScreen** UI
- Fix AppBar SafeArea

# 3.0.0-dev.5

- Rename **TalkerHistoryBuilder** -> **TalkerBuilder**
- Remove old **TalkerBuilder**

# 3.0.0-dev.4

- Make loggerSettings, loggerFilter, loggerFormater, loggerOutput Deprecated
  Currently you can setup this felds and all other logger settings only in TalkerLogger constructor

# 3.0.0-dev.3

- Update Talker screen UI
- Remove Filter bottom sheet (now this functionality is avaliable at TalkerScreen)
- Remove **iconsColor** field from TalkerScreenTheme

# 3.0.0-dev.2
- Fix settings updates checking in UI
- Update example

# 3.0.0-dev.1

- Rename TalkerMonitorItem -> TalkerMonitorCard
- Remove FlutterTalkerDataInterface and subclasses
- Remove talker_dio_logger depencency
- Update talker version to 3.0.0-dev.6
- Update internal packages versions

# 2.4.3
- **FEAT**: update path_provider version to 2.0.13

# 2.4.2
- **FIX**: logs sharing on windows devices

Thanks to [zezo357](https://github.com/zezo357)

# 2.4.1
- **FEAT**: Update talker_dio_logger to 1.3.0 and internal packages

# 2.4.0
- **FEAT**: Add settings bottom sheet on main screen
- **FEAT**: Add talker_dio_logger settings on settings bottom sheet
- **FEAT**: Make great UI improvements
- **FEAT**: Setup talker_dio_logger addon functionality
- **FEAT**: Make logs reversed as default

# 2.3.1
- **FEAT**: Add initial TalkerSettings screen to interact with Talker configuration

# 2.3.0
- **FEAT**: Add filters and fast actions for http calls monitor
- **FEAT**: Expanded size of log item click zone

# 2.2.1
- **FIX**: Fix color reset in console

Thnaks for [westito](https://github.com/westito)

## 2.2.0
- **FEAT**: Create FlutterTalker extensions for enable iOS/ MacOS colored logging
- **FEAT**: Implement [TalkerMonitor](https://github.com/Frezyx/talker/tree/dev#talkermonitor) for sorting, warning, infos, verbose errors
- **FEAT**: Implement [Talker Http Monitor](https://github.com/Frezyx/talker/tree/dev#talkermonitor) for http request-response analytics and monitoring
- **FEAT**: Web demo example avaliable at [frezyx.github.io/talker](https://frezyx.github.io/talker)

## 2.2.0-dev.1
- **INFO**: Init prerelease version
- **INFO**: Add web demo example

## 2.1.1-dev.3
- **FEAT**: TalkerMonitor sorting, warning, infos, verbose errors
- **FEAT**: Talker Http Monitor for http request-response analytics and monitoring

## 2.1.1-dev.2
- **FEAT**: Implement initial TalkerMonitor functionality

## 2.1.1-dev.1
- **FEAT**: Create FlutterTalker extensions for enable iOS/ MacOS colored logging

## 2.1.1
- **FIX**: TalkerFilter Cannot add to an unmodifiable list issue

Thnaks for [ProjectAJ14](https://github.com/ProjectAJ14)

## 2.1.0+1
- **INFO**: Improve README.md
- **INFO**: Improve pubspec.yaml

## 2.1.0
- **FEAT**: Implement filter for Talker constructor. 
Now you can filter data by logger and by talker instance as default.

## 2.0.6
- **FIX**: Update internal packages

## 2.0.5
- **FIX**: Analyzer issues about shareFiles method deprecation

## 2.0.4
- **FIX**: Analyzer issues about shareFiles method deprecation

## 2.0.3
- **FIX**: Talker logs card gaps

## 2.0.2
- **FIX**: Ignore routes with null settings.name in **TalkerRouteObserver**

## 2.0.1
- **FIX**: Logs text generation for copy and share (save to file) methods

## 2.0.0
- **FEAT**: Update TalkerScreen actions UI 
- **FEAT**: Implement logs file sharing 
- **FEAT**: Update logs filter UI
- **INFO**: Code base refactoring
- **Huge Talker update**
See more in [releases](https://github.com/Frezyx/talker/releases)

## 1.7.1
- **FIX**: FlutterTalkerException, FlutterTalkerError, FlutterTalkerLog now implements FlutterTalkerDataInterface

## 1.7.0
- **INFO**: HaveFlutterColorInterface -> TalkerFlutterAdapterInterface
- **FEAT**: Implement generateFlutterTextMessage method for **FlutterTalkerDataInterface**, **FlutterTalkerLog**, **FlutterTalkerError**, **FlutterTalkerException** classes

Now you can extend your flutter app logs.
- **generateFlutterTextMessage** used in TalkerScreen (UI list of logs)
- **generateTextMessage** used in console logs and history

## 1.6.0
- **FIX**: Logs cutting by flutter via print method. 
Now Talker constructor have output field to provide callback.
For flutter applications, you need to pass debugPrint as output method
See more in talker_flutter initialization on project README.md
- **INFO**: Update talker to 1.3.0 version

## 1.5.1
- **INFO**: Huge README update 
- **INFO**: Update talker to 1.2.0 version

## 1.5.0
- **FEAT**: Implement TalkerHistoryBuilder widget to create your own custom designed logs UI screen
- **FEAT**: Implement TalkerBuilder widget to create your own custom designed screen with last log message showing
- **INFO**: Update talker to 1.1.1 version

## 1.4.2
- **INFO**: Add TalkerScreen appBarTitle field

  Thanks to [Khaoz-Topsy](https://github.com/Khaoz-Topsy)

## 1.4.1
- **INFO**: Add documentation for TalkerWrapper

## 1.4.0
- **FEAT**: Implement TalkerWrapper widget (to showing snackbars)
- **FEAT**: Implement base error messages showing in UI (for user)

## 1.3.0
talker_logger updates:
- **FEAT**: Implement ExtendedLoggerFormatter
- **FEAT**: Upgrade ColoredLoggerFormatter
- **FIX**: Typo Formater -> Formatter


## 1.2.0
* **FEAT** Add default ordering setting for logs at TalkerScreen

  Thanks to [jirehcwe](https://github.com/jirehcwe)

## 1.1.0
  - **FEAT** Implement [TalkerListener](https://frezyx.github.io/talker/guide/talker-flutter.html#talkerlistener) widget to handle talker data stream

## 1.0.0
First stable release! 🎉

## 0.12.0
  - **INFO** Update talker version to 0.12.0

## 0.11.0
  - **INFO** Update talker version to 0.11.0

## 0.10.0
  - **FEAT** Create extended example and base example
  - **FIX** Make refactor in internal UI code
  - **FIX** Fix examples
  - **INFO** Update group_button version

## 0.9.0
  - **FEAT** Add expand button for hiding or revealing logs
  - **FEAT** Update TalkerScreen log UI
  - **FIX** Saving selected filters after sheet closing

## 0.8.1
- **talker_logger** update to 0.8.0 version
- talker_logger changes:
  - **INFO**: Create README with documentation and examples
  - **FIX**: Rename and refactor internal code
  - **INFO**: Add all public entities docs
  - **FIX**: Remove lineSymbol and maxLineWidth field from LogDetails

## 0.8.0
- **INFO** Add all package documentation
- **INFO** Update talker package to 0.8.0 version

## 0.6.0
- Update internal packages

## 0.5.4
- Update group_button version to 4.5.0
- Fix [issue 12](https://github.com/Frezyx/talker/issues/12) 

## 0.5.3
- Update talker version to 0.7.0

## 0.5.2
- Fix display message parsing

## 0.5.1
- Update display message UI
- Update talker version to 0.6.1

## 0.5.0
- Implement UI filter for convenient work with the console in the application

## 0.4.1
- Add Flutter Colors extended Talker models <br> to customize colors of your UI logs

## 0.4.0
- Update talker version to 0.5.0

## 0.3.0
- Update all packages to latest version
- Fix UI coloring

## 0.2.2
- Update Talker version

## 0.2.1
- Fix Talker to TalkerInterface

## 0.2.0
- Add logs list copy method
- Fix log colors

## 0.1.0

* Initial version







 
