import 'package:common_pub/common_pub.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:grpc/grpc.dart'; import 'styles/color_schemes.g.dart'; import 'view/login/login_view.dart'; Future tryApi( Future Function() call, { String? errTitle, Future Function(GrpcError err)? onError, Future Function()? onSuccess, VoidCallback? onFinally, }) async { Future handleError(GrpcError err) async { if (onError != null) { return onError(err); } if (err.code == StatusCode.unauthenticated) { if (await LoginView.to()) { try { await call(); } catch (e) { Get.snackbar('出错了', '未知错误'); } } return true; } return false; } await tryCatchGrpc( call, onError: handleError, onSuccess: onSuccess, onFinally: onFinally, ); } class Preview extends StatelessWidget { const Preview({super.key, required this.child}); final Widget child; @override Widget build(BuildContext context) { return child; } } // typedef NetImage = pb.NetImage; // extension NetImageExt on NetImage { // String? get md5Hex { // if (md5.isEmpty) { // return null; // } else { // return md5.toHexString(); // } // } // // Future readerBuilder() async { // final url = Uri.parse(this.url); // var request = http.Request('GET', url); // var response = await request.send(); // if (response.statusCode != 200) { // throw HttpException('state: ${response.statusCode}', uri: url); // } // final length = response.contentLength ?? 0; // return Reader(response.stream, length); // } // // Future preload() async { // await CacheManager() // .getCached(id: md5Hex ?? '', readerBuilder: readerBuilder); // } // } void runPreview(Widget child) { runApp(GetMaterialApp( theme: ThemeData(useMaterial3: true, colorScheme: lightColorScheme), home: Preview(child: child))); }