Features
- Display API request/response using Dio on the interface or log to the console.
- Mock response or URL when calling API.
- Display errors on the interface for easier debugging.
Installation
- Install the compatible version of the library: Type in the terminal:
flutter pub add dev_logger_ui
or add to the pubspec.yaml file in the section:
dependencies:
flutter:
sdk: flutter
dev_logger_ui: latest_version
- Add interceptor to Dio:
Dio dio = Dio();
dio.interceptors.add(LogApiInterceptor());
- Initialization:
Initialize API log:
// create navigatorKey
GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
MaterialApp(
navigatorKey: navigatorKey,
//...
)
DevLoggerUI.instance.init(
navigatorKey: navigatorKey,
isAutoStart: true,
isLogCurl: true,
openTypes: [OpenType.button, OpenType.longPress, OpenType.shake],
saveManager: SaveManager(),
sendText: ({required body, required email, required title}) async {
return "Email: $email\nTitle: $title\nBody: $body";
},
valueFromResponse: ValueFromResponse(
checkApiSuccess: (response, {url}) {
if (response is Map) {
return response['status'] == true && response['code'] == 200;
}
return false;
},
getErrorCode: (response, {url}) {
if (response is Map) {
final errorCode = response["errorCode"];
if (errorCode == null) return null;
return MapEntry("errorCode", errorCode);
}
return null;
},
getErrorMessage: (response, {url}) {
if (response is Map) {
final message = response['message'];
if (message == null) return null;
return message.toString();
}
return null;
},
),
waitTurnOnTime: 5000,
);
If you want to log exceptions to the interface:
runZonedGuarded(
() {
WidgetsFlutterBinding.ensureInitialized();
DevLoggerUI.instance.listenFlutterError(FlutterError.onError);
runApp(const MyApp());
},
(error, stack) {
DevLoggerUI.instance.addNormalError(error, stack);
Completer().completeError(error, stack);
},
);
- Main ways to open the log screen: There are 3 ways based on openType when initializing the library:
DevLoggerUI.instance.init(openTypes: [OpenType.button, OpenType.longPress, OpenType.shake]);
- OpenType.button: Show Log button - Double click the button to open the log interface. To enable this feature, you need to add:
MaterialApp(
navigatorKey: navigatorKey,
title: 'Flutter Demo',
builder: DevLoggerUI.builder(),
//...
);
If you use another library that also uses builder like EasyLoading, use as below:
MaterialApp(
navigatorKey: navigatorKey,
title: 'Flutter Demo',
builder: DevLoggerUI.builder(builder: EasyLoading.init()),
//...
);
- OpenType.longPress: Long press anywhere to open the log interface.
- OpenType.shake: Shake the phone to open the log interface.
Libraries
- common_utils
- Common utilities library
- commons/app_base_screen
- commons/app_colors
- commons/app_pages
- commons/app_styles
- commons/base_provider
- constants/mock_type
- constants/open_type
- constants/response_type
- default_functions
- Default functions library
- dev_logger_ui
- Dev logger UI library
- dev_logger_ui/dev_logger_ui
- Provides the main API Logger class and related types for API logging, overlay, and event management.
- dev_logger_ui/dev_logger_ui_abstract
- Provides the abstract base class for API Logger, including core properties.
- dev_logger_ui/get_response_value
- Provides a typedef and a class for extracting values from API responses.
- file_name
- File name class
- file_save_manager
- File save manager implementation
- log_api_constants
- API logger constants
- log_api_intercepter
- API logger interceptor
- Menu item definition
- models/base_model
- models/error_model
- models/log_model
- models/mock_api
- models/request_model
- models/upload_file
- save_manager
- Save manager abstract class
- send_mail
- ui/providers/common_provider
- ui/screens/api/api_provider
- ui/screens/api/api_screen
- ui/screens/mock_api/add_mock/add_mock_api_provider
- ui/screens/mock_api/add_mock/add_mock_api_screen
- ui/screens/mock_api/mock_api_screen
- ui/screens/request_detail_screen/request_detail/detail_block
- ui/screens/request_detail_screen/request_detail/request_detail
- ui/screens/request_detail_screen/request_detail/request_detail_header
- ui/screens/request_detail_screen/request_detail/request_detail_other
- ui/screens/request_detail_screen/request_detail/request_detail_payload
- ui/screens/request_detail_screen/request_detail/request_detail_provider
- ui/screens/request_detail_screen/request_detail/request_detail_response
- ui/screens/request_detail_screen/request_detail/request_detail_response_preview
- ui/screens/request_detail_screen/request_detail_screen
- ui/screens/request_detail_screen/request_detail_screen_provider
- ui/screens/send_email_screen
- ui/widgets/action_bottom_sheeet
- ui/widgets/app_data_viewer
- ui/widgets/bottom_sheet_base
- ui/widgets/copyable_two_text
- ui/widgets/imput/app_dropdown
- ui/widgets/imput/app_textfield
- ui/widgets/imput/input_contants
- ui/widgets/item_api_action_bottom_sheeet
- A bottom sheet widget that displays a list of API action menu items.
- ui/widgets/main_listview_item/api_item
- ui/widgets/main_listview_item/error_item
- ui/widgets/main_listview_item/model_item
- ui/widgets/measure_size
- ui/widgets/open_image
- ui/widgets/overlay/dev_logger_ui_overlay
- ui/widgets/overlay/overlay_entry
- ui/widgets/ratio_two_text
- ui/widgets/simple_rich_text
- ui/widgets/two_text
- ui/widgets/type_icon
- utils/app_utils
- Application utilities library
- utils/app_values
- Application values library
- utils/string_utils
- String utilities library