add flutterError view

master
小赖 4 years ago
parent 050d008c5d
commit 3db402547a

@ -1,5 +1,9 @@
# CHANGELOG # CHANGELOG
## [1.2.0]
* add flutterError view
## [1.1.1-nullsafety.3] ## [1.1.1-nullsafety.3]
* fix context error. * fix context error.

@ -3,6 +3,11 @@ import 'package:flutter/material.dart';
import 'package:power_logger/power_logger.dart'; import 'package:power_logger/power_logger.dart';
void main() { void main() {
WidgetsFlutterBinding.ensureInitialized();
FlutterError.onError = (details) {
LoggerData.addData(details);
FlutterError.presentError(details);
};
runApp(MyApp()); runApp(MyApp());
} }
@ -44,6 +49,8 @@ class _MyHomePageState extends State<MyHomePage> {
bool loading = false; bool loading = false;
String? nullableValue;
@override @override
void dispose() { void dispose() {
_textController.dispose(); _textController.dispose();
@ -56,15 +63,24 @@ class _MyHomePageState extends State<MyHomePage> {
appBar: AppBar( appBar: AppBar(
title: Text(widget.title), title: Text(widget.title),
), ),
body: Container( body: Column(
padding: EdgeInsets.all(10), children: [
alignment: Alignment.center, TextButton(
child: TextField( onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Text(nullableValue!)),
);
},
child: Text('FAIL PAGE'),
),
TextField(
controller: _textController, controller: _textController,
decoration: InputDecoration( decoration: InputDecoration(
filled: true, filled: true,
), ),
), ),
],
), ),
floatingActionButton: FloatingActionButton.extended( floatingActionButton: FloatingActionButton.extended(
icon: loading icon: loading

@ -5,84 +5,84 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.5.0" version: "2.5.0"
auto_size_text: auto_size_text:
dependency: transitive dependency: transitive
description: description:
name: auto_size_text name: auto_size_text
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.0-nullsafety.0" version: "3.0.0-nullsafety.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
name: boolean_selector name: boolean_selector
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
name: charcode name: charcode
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
clock: clock:
dependency: transitive dependency: transitive
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
collection: collection:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.15.0" version: "1.15.0"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.2" version: "1.0.2"
device_info: device_info:
dependency: transitive dependency: transitive
description: description:
name: device_info name: device_info
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
device_info_platform_interface: device_info_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: device_info_platform_interface name: device_info_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
dio: dio:
dependency: "direct main" dependency: "direct main"
description: description:
name: dio name: dio
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.0.0"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
flutter: flutter:
@ -94,7 +94,7 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_highlight name: flutter_highlight
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.7.0" version: "0.7.0"
flutter_test: flutter_test:
@ -106,63 +106,63 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: get name: get
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.1.4" version: "4.1.4"
highlight: highlight:
dependency: transitive dependency: transitive
description: description:
name: highlight name: highlight
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.7.0" version: "0.7.0"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.0.0"
logger: logger:
dependency: transitive dependency: transitive
description: description:
name: logger name: logger
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.12.10" version: "0.12.10"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
package_info: package_info:
dependency: transitive dependency: transitive
description: description:
name: package_info name: package_info
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
path: path:
dependency: transitive dependency: transitive
description: description:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
power_logger: power_logger:
@ -171,7 +171,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "1.1.1-nullsafety.3" version: "1.2.0"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -181,56 +181,56 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.10.0" version: "1.10.0"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
string_scanner: string_scanner:
dependency: transitive dependency: transitive
description: description:
name: string_scanner name: string_scanner
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
name: term_glyph name: term_glyph
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.19" version: "0.2.19"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
sdks: sdks:

@ -3,60 +3,32 @@ import 'package:flutter/material.dart';
import 'package:power_logger/src/view/dio_error_view.dart'; import 'package:power_logger/src/view/dio_error_view.dart';
///Dio Error builder ///Dio Error builder
class DioErrorBuilder extends StatefulWidget { class DioErrorBuilder extends StatelessWidget {
final DioError data; final DioError data;
final DateTime date; final DateTime date;
DioErrorBuilder({Key? key, required this.data, required this.date}) DioErrorBuilder({Key? key, required this.data, required this.date})
: super(key: key); : super(key: key);
@override
_DioErrorBuilderState createState() => _DioErrorBuilderState();
}
class _DioErrorBuilderState extends State<DioErrorBuilder> {
RequestOptions get _request => widget.data.requestOptions;
String renderErrText(DioErrorType type) {
switch (type) {
case DioErrorType.connectTimeout:
return '连接超时';
case DioErrorType.sendTimeout:
return '发送超时';
case DioErrorType.receiveTimeout:
return '接收超时';
case DioErrorType.response:
return '服务端错误';
case DioErrorType.cancel:
return '取消连接';
case DioErrorType.other:
return '未知错误';
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Material( return ListTile(
color: Colors.red[100], tileColor: Colors.red.withOpacity(0.2),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => DioErrorView(data: widget.data), builder: (context) => DioErrorView(data: data),
), ),
); );
}, },
title: Text( title: Text(
_request.path, data.requestOptions.path,
style: TextStyle( style: TextStyle(
color: Colors.black87, color: Colors.black87,
), ),
), ),
subtitle: Text( subtitle: Text(
'${widget.data.message}\n${widget.date}', '${data.message}\n$date',
style: TextStyle( style: TextStyle(
color: Colors.black45, color: Colors.black45,
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
@ -66,23 +38,8 @@ class _DioErrorBuilderState extends State<DioErrorBuilder> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Chip( Chip(
backgroundColor: Colors.green.withOpacity(0.8), backgroundColor: Colors.blue.withOpacity(0.8),
label: Text(_request.method), label: Text(data.requestOptions.method),
),
],
),
),
Row(
children: [
SizedBox(width: 24),
Text(widget.data.type.toString()),
Spacer(),
Chip(
backgroundColor: Colors.red.withOpacity(0.3),
label: Text(renderErrText(widget.data.type)),
),
SizedBox(width: 24),
],
), ),
], ],
), ),

@ -3,48 +3,37 @@ import 'package:flutter/material.dart';
import 'package:power_logger/src/view/dio_response_view.dart'; import 'package:power_logger/src/view/dio_response_view.dart';
/// Dio Response Builder /// Dio Response Builder
class DioResponseBuilder extends StatefulWidget { class DioResponseBuilder extends StatelessWidget {
final Response data; final Response data;
final DateTime date; final DateTime date;
DioResponseBuilder({Key? key, required this.data, required this.date}) DioResponseBuilder({Key? key, required this.data, required this.date})
: super(key: key); : super(key: key);
@override
_DioResponseBuilderState createState() => _DioResponseBuilderState();
}
class _DioResponseBuilderState extends State<DioResponseBuilder> {
RequestOptions? get _request => widget.data.requestOptions;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Material( return ListTile(
elevation: 0, tileColor: Colors.green.withOpacity(0.2),
color: Colors.green[100],
child: ListTile(
onTap: () => Navigator.push( onTap: () => Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => DioResponseView(data: widget.data), builder: (context) => DioResponseView(data: data),
), ),
), ),
title: Text( title: Text(
_request!.path, data.requestOptions.path,
style: TextStyle( style: TextStyle(
color: Colors.black87, color: Colors.black87,
), ),
), ),
subtitle: Text(widget.date.toString()), subtitle: Text(date.toString()),
trailing: Row( trailing: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Chip( Chip(
backgroundColor: Colors.green.withOpacity(0.8), backgroundColor: Colors.blue.withOpacity(0.8),
label: Text(_request!.method), label: Text(data.requestOptions.method),
), ),
], ],
), ),
),
); );
} }
} }

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:power_logger/src/view/flutter_error_view.dart';
class FlutterErrorBuilder extends StatelessWidget {
final FlutterErrorDetails details;
FlutterErrorBuilder({Key? key, required this.details}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListTile(
tileColor: Colors.red.withOpacity(0.4),
title: Text(details.exception.toString()),
trailing: Chip(label: Text('EXCEPTION'), backgroundColor: Colors.red),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => FlutterErrorView(details: details),
),
);
},
);
}
}

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:power_logger/power_logger.dart'; import 'package:power_logger/power_logger.dart';
import 'package:power_logger/src/builders/dio_responses_builder.dart'; import 'package:power_logger/src/builders/dio_responses_builder.dart';
import 'package:power_logger/src/builders/dio_error_builder.dart'; import 'package:power_logger/src/builders/dio_error_builder.dart';
import 'package:power_logger/src/builders/flutter_error_builder.dart';
import 'package:power_logger/src/parser/unfocus_parser.dart'; import 'package:power_logger/src/parser/unfocus_parser.dart';
///LoggerDataParser ///LoggerDataParser
@ -18,6 +19,8 @@ class LoggerDataParser {
data: data.rawData, data: data.rawData,
date: data.date, date: data.date,
); );
if (data.rawData is FlutterErrorDetails)
return FlutterErrorBuilder(details: data.rawData);
return UnfocusParser(data: data.rawData, tag: data.tag); return UnfocusParser(data: data.rawData, tag: data.tag);
} }
} }

@ -0,0 +1,57 @@
import 'package:flutter/material.dart';
class FlutterErrorView extends StatefulWidget {
final FlutterErrorDetails details;
FlutterErrorView({Key? key, required this.details}) : super(key: key);
@override
_FlutterErrorViewState createState() => _FlutterErrorViewState();
}
class _FlutterErrorViewState extends State<FlutterErrorView> {
String get exceptionValue {
if (widget.details.exception is AssertionError) {
return (widget.details.exception as AssertionError).message.toString();
} else
return widget.details.exception.toString();
}
List<String> get _stringList {
return widget.details.stack.toString().split('\n');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Error'),
),
body: Column(
children: [
Card(
margin: EdgeInsets.all(10),
child: Padding(
padding: EdgeInsets.all(10),
child: SelectableText(
exceptionValue,
style: TextStyle(
fontSize: 22,
),
),
),
),
Expanded(
child: ListView.separated(
padding: EdgeInsets.all(10),
itemBuilder: (context, index) {
return Text(_stringList[index]);
},
separatorBuilder: (context, index) => SizedBox(height: 5),
itemCount: _stringList.length,
),
),
],
),
);
}
}

@ -5,77 +5,77 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.5.0" version: "2.5.0"
auto_size_text: auto_size_text:
dependency: "direct main" dependency: "direct main"
description: description:
name: auto_size_text name: auto_size_text
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.0-nullsafety.0" version: "3.0.0-nullsafety.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
name: boolean_selector name: boolean_selector
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
characters: characters:
dependency: transitive dependency: transitive
description: description:
name: characters name: characters
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
name: charcode name: charcode
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
clock: clock:
dependency: transitive dependency: transitive
description: description:
name: clock name: clock
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
collection: collection:
dependency: transitive dependency: transitive
description: description:
name: collection name: collection
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.15.0" version: "1.15.0"
device_info: device_info:
dependency: "direct main" dependency: "direct main"
description: description:
name: device_info name: device_info
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
device_info_platform_interface: device_info_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: device_info_platform_interface name: device_info_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
dio: dio:
dependency: "direct main" dependency: "direct main"
description: description:
name: dio name: dio
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.0.0"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
flutter: flutter:
@ -87,7 +87,7 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: flutter_highlight name: flutter_highlight
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.7.0" version: "0.7.0"
flutter_test: flutter_test:
@ -99,56 +99,56 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: highlight name: highlight
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.7.0" version: "0.7.0"
http_parser: http_parser:
dependency: transitive dependency: transitive
description: description:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.0" version: "4.0.0"
logger: logger:
dependency: "direct main" dependency: "direct main"
description: description:
name: logger name: logger
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.12.10" version: "0.12.10"
meta: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
package_info: package_info:
dependency: "direct main" dependency: "direct main"
description: description:
name: package_info name: package_info
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
path: path:
dependency: transitive dependency: transitive
description: description:
name: path name: path
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
sky_engine: sky_engine:
@ -160,56 +160,56 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
name: stack_trace name: stack_trace
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.10.0" version: "1.10.0"
stream_channel: stream_channel:
dependency: transitive dependency: transitive
description: description:
name: stream_channel name: stream_channel
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
string_scanner: string_scanner:
dependency: transitive dependency: transitive
description: description:
name: string_scanner name: string_scanner
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
name: term_glyph name: term_glyph
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.19" version: "0.2.19"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
sdks: sdks:

@ -1,10 +1,10 @@
name: power_logger name: power_logger
description: A well log tool on flutter, support Dio and custom type data. description: A well log tool on flutter, support Dio and custom type data.
version: 1.1.1-nullsafety.3 version: 1.2.0
homepage: https://github.com/laiiihz/power_logger homepage: https://github.com/laiiihz/power_logger
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: ">=2.12.0 <3.0.0"
flutter: ">=1.17.0" flutter: ">=1.17.0"
dependencies: dependencies:

Loading…
Cancel
Save