Skip to content

Commit c49326d

Browse files
committed
修复用户的blog链接在row下的长文本没有省略号问题。
使用compute的isolate做json decode
1 parent 5659ec4 commit c49326d

22 files changed

+140
-28
lines changed

lib/common/ab/SqlProvider.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:async';
2+
import 'dart:convert';
23
/**
34
* 数据库表
45
* Created by guoshuyu
@@ -43,6 +44,15 @@ abstract class BaseDbProvider {
4344
}
4445
return await SqlManager.getCurrentDatabase();
4546
}
47+
48+
49+
static List<dynamic> parseListResult(String data) {
50+
return json.decode(data);
51+
}
52+
53+
static Map<String, dynamic> parseResult(String data) {
54+
return json.decode(data);
55+
}
4656
}
4757

4858

lib/common/ab/provider/event/ReceivedEventDbProvider.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:async';
2-
import 'dart:convert';
3-
2+
import 'package:flutter/foundation.dart';
43
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
54
import 'package:gsy_github_app_flutter/common/model/Event.dart';
65
import 'package:sqflite/sqflite.dart';
@@ -64,7 +63,10 @@ class ReceivedEventDbProvider extends BaseDbProvider {
6463
List<Event> list = new List();
6564
if (maps.length > 0) {
6665
ReceivedEventDbProvider provider = ReceivedEventDbProvider.fromMap(maps.first);
67-
List<dynamic> eventMap = json.decode(provider.data);
66+
67+
///使用 compute 的 Isolate 优化 json decode
68+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data);
69+
6870
if (eventMap.length > 0) {
6971
for (var item in eventMap) {
7072
list.add(Event.fromJson(item));

lib/common/ab/provider/event/UserEventDbProvider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/Event.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -77,7 +78,10 @@ class UserEventDbProvider extends BaseDbProvider {
7778
var provider = await _getProvider(db, userName);
7879
if (provider != null) {
7980
List<Event> list = new List();
80-
List<dynamic> eventMap = json.decode(provider.data);
81+
82+
///使用 compute 的 Isolate 优化 json decode
83+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data as String);
84+
8185
if (eventMap.length > 0) {
8286
for (var item in eventMap) {
8387
list.add(Event.fromJson(item));

lib/common/ab/provider/issue/IssueCommentDbProvider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/Issue.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -85,7 +86,10 @@ class IssueCommentDbProvider extends BaseDbProvider {
8586
var provider = await _getProvider(db, fullName, number);
8687
if (provider != null) {
8788
List<Issue> list = new List();
88-
List<dynamic> eventMap = json.decode(provider.data);
89+
90+
///使用 compute 的 Isolate 优化 json decode
91+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data as String);
92+
8993
if (eventMap.length > 0) {
9094
for (var item in eventMap) {
9195
list.add(Issue.fromJson(item));

lib/common/ab/provider/issue/IssueDetailDbProvider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/ab/provider/repos/RepositoryDetailDbProvider.dart';
67
import 'package:gsy_github_app_flutter/common/model/Issue.dart';
@@ -81,7 +82,10 @@ class IssueDetailDbProvider extends BaseDbProvider {
8182
Database db = await getDataBase();
8283
var provider = await _getProvider(db, fullName, number);
8384
if (provider != null) {
84-
return Issue.fromJson(json.decode(provider.data));
85+
86+
///使用 compute 的 Isolate 优化 json decode
87+
var mapData = await compute(BaseDbProvider.parseResult, provider.data as String);
88+
return Issue.fromJson(mapData);
8589
}
8690
return null;
8791
}

lib/common/ab/provider/repos/ReadHistoryDbProvider.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/config/Config.dart';
67
import 'package:gsy_github_app_flutter/common/model/Repository.dart';
@@ -100,8 +101,11 @@ class ReadHistoryDbProvider extends BaseDbProvider {
100101
List<Repository> list = new List();
101102
for (var providerMap in provider) {
102103
ReadHistoryDbProvider provider = ReadHistoryDbProvider.fromMap(providerMap);
103-
Map map = json.decode(provider.data);
104-
list.add(Repository.fromJson(map));
104+
105+
///使用 compute 的 Isolate 优化 json decode
106+
var mapData = await compute(BaseDbProvider.parseResult, provider.data);
107+
108+
list.add(Repository.fromJson(mapData));
105109
}
106110
return list;
107111
}

lib/common/ab/provider/repos/RepositoryCommitsDbProvider.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/RepoCommit.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -82,7 +83,11 @@ class RepositoryCommitsDbProvider extends BaseDbProvider {
8283
var provider = await _getProvider(db, fullName, branch);
8384
if (provider != null) {
8485
List<RepoCommit> list = new List();
85-
List<dynamic> eventMap = json.decode(provider.data);
86+
87+
///使用 compute 的 Isolate 优化 json decode
88+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data as String);
89+
90+
8691
if (eventMap.length > 0) {
8792
for (var item in eventMap) {
8893
list.add(RepoCommit.fromJson(item));

lib/common/ab/provider/repos/RepositoryDetailDbProvider.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/Repository.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -76,7 +77,12 @@ class RepositoryDetailDbProvider extends BaseDbProvider {
7677
Database db = await getDataBase();
7778
var provider = await _getProvider(db, fullName);
7879
if (provider != null) {
79-
return Repository.fromJson(json.decode(provider.data));
80+
81+
82+
///使用 compute 的 Isolate 优化 json decode
83+
var mapData = await compute(BaseDbProvider.parseResult, provider.data as String);
84+
85+
return Repository.fromJson(mapData);
8086
}
8187
return null;
8288
}

lib/common/ab/provider/repos/RepositoryEventDbProvider.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/Event.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -79,7 +80,11 @@ class RepositoryEventDbProvider extends BaseDbProvider {
7980
var provider = await _getProvider(db, fullName);
8081
if (provider != null) {
8182
List<Event> list = new List();
82-
List<dynamic> eventMap = json.decode(provider.data);
83+
84+
///使用 compute 的 Isolate 优化 json decode
85+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data as String);
86+
87+
8388
if (eventMap.length > 0) {
8489
for (var item in eventMap) {
8590
list.add(Event.fromJson(item));

lib/common/ab/provider/repos/RepositoryForkDbProvider.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:convert';
33

4+
import 'package:flutter/foundation.dart';
45
import 'package:gsy_github_app_flutter/common/ab/SqlProvider.dart';
56
import 'package:gsy_github_app_flutter/common/model/Repository.dart';
67
import 'package:sqflite/sqflite.dart';
@@ -79,7 +80,10 @@ class RepositoryForkDbProvider extends BaseDbProvider {
7980
var provider = await _getProvider(db, fullName);
8081
if (provider != null) {
8182
List<Repository> list = new List();
82-
List<dynamic> eventMap = json.decode(provider.data);
83+
84+
///使用 compute 的 Isolate 优化 json decode
85+
List<dynamic> eventMap = await compute(BaseDbProvider.parseListResult, provider.data as String);
86+
8387
if (eventMap.length > 0) {
8488
for (var item in eventMap) {
8589
list.add(Repository.fromJson(item));

0 commit comments

Comments
 (0)