You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.2 KiB

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:power_logger/power_logger.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
FlutterError.onError = (details) {
LoggerData.addData(details);
FlutterError.presentError(details);
};
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'PowerLogger\nDemo',
home: MyHomePage(title: 'PowerLogger Demo'),
theme: ThemeData.dark(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
TextEditingController _textController =
TextEditingController(text: 'https://');
@override
void initState() {
super.initState();
NetTool.init();
NetTool.dio.get("https://192.168.31.255:8888");
NetTool.dio.get("https://www.baidu.com", queryParameters: {'test': 'test'});
NetTool.dio.get("https://www.baidu.com/ahefbawfbe.html");
NetTool.dio.post("https://www.baidu.com/ahefbawfbe.html",
data: FormData.fromMap({'test': 'test'}));
NetTool.dio.get(
"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png");
PowerLogger.start(context);
LoggerData.addData('TEST', tag: 'TAG');
}
bool loading = false;
String? nullableValue;
@override
void dispose() {
_textController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
children: [
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Text(nullableValue!)),
);
},
child: Text('FAIL PAGE'),
),
TextField(
controller: _textController,
decoration: InputDecoration(
filled: true,
),
),
],
),
floatingActionButton: FloatingActionButton.extended(
icon: loading
? CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation(Colors.white))
: Icon(Icons.send),
label: Text('发送'),
onPressed: loading
? null
: () async {
loading = true;
setState(() {});
await NetTool.dio.get(_textController.text).catchError((_) {});
loading = false;
setState(() {});
},
),
);
}
}
class NetTool {
static Dio dio = Dio();
static init() {
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) async {
return handler.next(options);
},
onResponse: (response, handler) async {
LoggerData.addData(response);
return handler.next(response);
},
onError: (DioError e, handler) async {
LoggerData.addData(e);
return handler.next(e);
},
));
}
}