是否可以使用 flutter 读取二进制文件进行改造?

问题描述 投票:0回答:2

我有一个二进制文件,我需要为我的 flutter 应用程序使用改造来读取它的内容。

我想知道这是否可能。 如果是,请提供任何链接?

否则,我需要一些建议。

在此先感谢您的帮助

flutter dart get retrofit bin
2个回答
1
投票

首先,你必须指定你的

retrofit
客户端并在里面指定你的API并通过
ReturnType.bytes
注解指定
DioResponseType

我将做一个从https://www.phoca.cz 网站下载图像的简单示例,您可以用同样的方式下载任何类型的文件

part 'rest_client.g.dart';

@RestApi(baseUrl: "https://www.phoca.cz/")
abstract class RestClient {
  factory RestClient(Dio dio, {String baseUrl}) = _RestClient;

  @GET("images/phocadownloadsite/phocadownload-category-view-bootstrap-mobile-mobile-view.png")
  @DioResponseType(ResponseType.bytes)
  Future<HttpResponse<List<int>>> downloadFile();
}

生成代码

flutter pub run build_runner run

初始化客户端

final dio = Dio(); 
final client = RestClient(dio);
final response = await client.downloadFile();

您可以通过

Image.memory

获取图像
Future<void> main() async {
  final dio = Dio();
  final client = RestClient(dio);
  final response = await client.downloadFile();
  WidgetsFlutterBinding.ensureInitialized();

  runApp(MaterialApp(
    home: Scaffold(
      body: Center(
        child: Image.memory(response.response.data),
      ),
    ),
  ));
}


0
投票

powerman23rus 给出的答案与改造完美配合,但如果您正在寻找需要更少代码的包,您可以尝试不需要的 http 包(https://pub.dev/packages/http)标签或生成的文件。您可以收到这样的图像:

import 'package:http/http.dart' as http;

late http.Response response;
  response = await http
      .get(
    Uri.parse("https://www.example.com/Cards/GetRandom.png"),
    headers: {"Authorization":"Bearer "+token}
  )
      .timeout(const Duration(seconds: 7));
Uint8List image = response.bodyBytes;

获取后,您可以使用此小部件渲染图像:

Image.memory(image)
© www.soinside.com 2019 - 2024. All rights reserved.