From 8f9ed5469d60806828d7e9daa0d60230cc6216e3 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang <pd4d10@gmail.com> Date: Sun, 2 Feb 2020 23:06:54 +0800 Subject: [PATCH] fix(bb): utf8 decode text --- lib/models/auth.dart | 6 ------ lib/screens/bb_object.dart | 5 +++-- lib/screens/bb_repo.dart | 5 ++++- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 182c7e7..402ec7a 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -287,12 +287,6 @@ class AuthModel with ChangeNotifier { ); } - Future<String> fetchBbReadme(String p) async { - final res = await fetchBb(p); - if (res.statusCode >= 400) return null; - return res.body; - } - Future<void> init() async { // Listen scheme _sub = getUriLinksStream().listen(_onSchemeDetected, onError: (err) { diff --git a/lib/screens/bb_object.dart b/lib/screens/bb_object.dart index 8363e5f..04e5e4a 100644 --- a/lib/screens/bb_object.dart +++ b/lib/screens/bb_object.dart @@ -28,9 +28,10 @@ class BbObjectScreen extends StatelessWidget { final res = await auth .fetchBb('/repositories/$owner/$name/src/$ref/${path ?? ''}'); if (res.headers[HttpHeaders.contentTypeHeader] == 'text/plain') { - return res.body; + return utf8.decode(res.bodyBytes); } else { - return BbPagination.fromJson(json.decode(res.body)).values; + return BbPagination.fromJson(json.decode(utf8.decode(res.bodyBytes))) + .values; } }, actionBuilder: (p, _) { diff --git a/lib/screens/bb_repo.dart b/lib/screens/bb_repo.dart index 0b72938..62abe27 100644 --- a/lib/screens/bb_repo.dart +++ b/lib/screens/bb_repo.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:filesize/filesize.dart'; import 'package:flutter/material.dart'; import 'package:git_touch/models/auth.dart'; @@ -27,7 +29,8 @@ class BbRepoScreen extends StatelessWidget { final repo = BbRepo.fromJson(r); final res = await auth.fetchBb( '/repositories/$owner/$name/src/${repo.mainbranch.name}/README.md'); - final readme = res.statusCode >= 400 ? null : res.body; + final readme = + res.statusCode >= 400 ? null : utf8.decode(res.bodyBytes); return Tuple2(repo, readme); }, bodyBuilder: (t, setState) {