uni_overlay_log 0.1.5
uni_overlay_log: ^0.1.5 copied to clipboard
Console de logs embutido e arrastável para Flutter Web/Mobile/Desktop, com captura de prints/erros e hotkey.
import 'dart:async';
import 'package:flutter/foundation.dart' show kIsWeb, kDebugMode, defaultTargetPlatform, TargetPlatform;
import 'package:flutter/material.dart';
import 'package:uni_overlay_log/uni_overlay_log.dart';
void main() {
runZonedGuarded(() {
WidgetsFlutterBinding.ensureInitialized();
// Inicia captura de logs/erros
UniOverlayLog.I.init(capturePrints: true);
final visibility = UniOverlayVisibility(initial: true);
final enableHotkeys = kIsWeb ||
defaultTargetPlatform == TargetPlatform.macOS ||
defaultTargetPlatform == TargetPlatform.linux ||
defaultTargetPlatform == TargetPlatform.windows;
runApp(
UniOverlayShortcuts(
enabled: enableHotkeys,
controller: visibility,
child: MaterialApp(
debugShowCheckedModeBanner: false,
builder: (context, child) => uniOverlayAppBuilder(
context: context,
child: child,
isWeb: kIsWeb,
visibility: visibility,
),
home: const DemoPage(),
),
),
);
}, (error, stack) {
Log.e('Erro não tratado', stack);
if (kDebugMode) {
// rethrow;
}
});
}
class DemoPage extends StatelessWidget {
const DemoPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('uni_overlay_log example')),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ElevatedButton(
onPressed: () => Log.i('Cliquei no Log.i'),
child: const Text('Log.i'),
),
const SizedBox(height: 12),
ElevatedButton(
onPressed: () {
try { throw Exception('Erro de teste'); }
catch (e, s) { Log.e(e, s); }
},
child: const Text('Log.e'),
),
],
),
),
);
}
}