corin 0.0.4
corin: ^0.0.4 copied to clipboard
A devtool including dio/log/platform informations.
example/lib/main.dart
// ignore: depend_on_referenced_packages
import 'package:corin/corin.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());
}
void main() {
WidgetsFlutterBinding.ensureInitialized();
if (kDebugMode) {
CorinDev.addApp(TestTool());
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),
);
}
}
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
? (context, child) {
return corinBuilder(context, _navigatorKey, child);
}
: 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.dev/static/hash-krgcpa0o/img/supported-by-google-2x.png',
options: Options(responseType: ResponseType.bytes),
);
dio.get('https://www.zhihu.com');
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');
},
),
ListTile(
title: Text('Error'),
onTap: () {
throw UnimplementedError();
},
),
ListTile(
title: Text('Event'),
onTap: () {
CorinDev.event(name: 'name', params: {'a': 'a'});
},
),
],
),
);
}
}