corin 0.1.2
corin: ^0.1.2 copied to clipboard
A powerful devtool includes device informations, developer log, etc.
example/lib/main.dart
// ignore: depend_on_referenced_packages
import 'package:corin/corin.dart';
// ignore: depend_on_referenced_packages
import 'package:corin_dio/corin_dio.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
final _navigatorKey = GlobalKey<NavigatorState>();
final dio = Dio();
class TestTool extends ToolBase {
@override
String get name => 'Test';
@override
Widget build() => Center(child: FlutterLogo());
}
class TestTool2 extends ToolBase {
@override
String get name => 'Test2';
@override
Widget build() => Center(child: FlutterLogo());
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kDebugMode) {
CorinDev.addApp(CorinDio());
CorinDev.addApp(TestTool());
CorinDev.addApp(TestTool2());
dio.interceptors.add(CorinNetworkInterceptor());
FlutterError.onError = (detail) {
CorinDev.logFlutterError(detail);
FlutterError.dumpErrorToConsole(detail);
};
PlatformDispatcher.instance.onError = (error, stack) {
CorinDev.logPlatformError(error, stack);
return true;
};
}
runApp(const MyApp());
}
void log(
String message, {
String tag = 'log',
Object? error,
StackTrace? st,
LogLevel level = LogLevel.info,
}) {
if (kDebugMode) {
CorinDev.log(
LogRecord(
message: message,
tag: tag,
error: error,
level: level,
stackTrace: st,
),
);
}
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Corin Demo',
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
navigatorKey: _navigatorKey,
builder: kDebugMode ? corinBuilder : null,
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Corin Demo')),
body: ListView(
children: [
ListTile(
title: Text('Network'),
onTap: () {
dio.get(
'http://127.0.0.1',
data: {
'map': {'a': 'a', 'b': '2'},
'number': 12.4,
'boolean': false,
'nullable': null,
'list': [1, 2, 3, 4],
},
);
dio.get('https://6548b574dd8ebcd4ab236f5b.mockapi.io/111');
dio.get(
'https://pub.flutter-io.cn/static/hash-krgcpa0o/img/supported-by-google-2x.png',
options: Options(responseType: ResponseType.bytes),
);
dio.get('https://surl.amap.com/12gPXAJF8es');
dio.get('https://www.baidu.com/ajwiefnauwenfaewfi?of=a&awef=b');
final form = FormData.fromMap({
'name': 'John',
'age': 20,
'file': MultipartFile.fromString(
'value',
filename: 'a.txt',
contentType: DioMediaType.parse('plain/text'),
),
});
dio.post('http://192.168.15.111', data: form);
},
),
ListTile(
title: Text('Log'),
onTap: () {
log('message', tag: 'test');
log('msg');
log('success', level: LogLevel.fine);
log(
'error msg',
level: LogLevel.severe,
error: Exception('error'),
st: StackTrace.current,
);
},
),
ListTile(
title: Text('Error'),
onTap: () {
throw UnimplementedError();
},
),
ListTile(
title: Text('Event'),
onTap: () {
CorinDev.event(
name: 'wnargbnim',
params: Map.fromEntries(
List.generate(32, (i) => MapEntry(i.toString(), '$i')),
),
extra: {'extra': 'extra'},
);
},
),
],
),
);
}
}