Skip to content

Commit f411a04

Browse files
committed
Fixed #9
1 parent b473bc8 commit f411a04

File tree

3 files changed

+17
-20
lines changed

3 files changed

+17
-20
lines changed

lib/main.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import 'package:flutter_app_cse/CustomImageSearchPage.dart';
55
void main() => runApp(SearchDemoApp());
66

77
class SearchDemoApp extends StatelessWidget {
8+
CustomWebSearchDemo webSearchDemo = CustomWebSearchDemo();
9+
810
@override
911
Widget build(BuildContext context) {
1012
return MaterialApp(
11-
home: CustomWebSearchDemo(),
13+
home: webSearchDemo,
1214
initialRoute: '/websearch',
1315
routes: {
14-
'/websearch': (context) => CustomWebSearchDemo(),
16+
'/websearch': (context) => webSearchDemo,
1517
'/imagesearch': (context) => CustomImageSearchDemo(),
1618
},
1719
title: 'Custom Search Engine Flutter Demo');

lib/search_data_source.dart

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,6 @@ class FakeSearchDataSource implements SearchDataSource {
120120
await rootBundle.loadString(assetPath);
121121
}
122122

123-
int count = 0;
124-
125123
@override
126124
Future<SearchResults> search(String query, {String searchType}) async {
127125
if (!searchResponses.containsKey(query)) {
@@ -132,18 +130,18 @@ class FakeSearchDataSource implements SearchDataSource {
132130
}
133131
SearchQuery searchQuery =
134132
SearchQuery(query, this.cx, searchType: searchType);
135-
var cachedResponse = await _cache.get(searchQuery);
136-
if (cachedResponse != null) {
137-
return cachedResponse;
133+
134+
if (!_cache.isKeyInFlightOrInCache(searchQuery)) {
135+
_cache.markAsInFlight(searchQuery);
136+
} else {
137+
return await _cache.get(searchQuery);
138138
}
139+
139140
Map searchMap = jsonDecode(searchResponses[query].searchResponseJsonString);
140141
customsearch.Search search = customsearch.Search.fromJson(searchMap);
141142

142-
print('count: $count');
143-
count++;
144-
145143
var result = SearchResults(search);
146-
await _cache.set(searchQuery, result);
144+
_cache.set(searchQuery, result);
147145
return result;
148146
}
149147
}
@@ -307,7 +305,6 @@ class CustomSearchDataSource implements SearchDataSource {
307305
final String cx;
308306
final String apiKey;
309307
customsearch.CustomsearchApi api;
310-
int searchCount = 0;
311308
final ExpireCache<SearchQuery, SearchResults> _cache =
312309
ExpireCache<SearchQuery, SearchResults>();
313310

@@ -324,16 +321,14 @@ class CustomSearchDataSource implements SearchDataSource {
324321
SearchQuery searchQuery =
325322
SearchQuery(query, this.cx, searchType: searchType);
326323

327-
final cachedResponse = await _cache.get(searchQuery);
328-
if (cachedResponse != null) {
329-
return cachedResponse;
324+
if (!_cache.isKeyInFlightOrInCache(searchQuery)) {
325+
_cache.markAsInFlight(searchQuery);
326+
} else {
327+
return await _cache.get(searchQuery);
330328
}
331329

332-
print('count: $searchCount');
333-
searchCount++;
334-
335330
final result = await searchQuery.runSearch(this.api);
336-
await _cache.set(searchQuery, result);
331+
_cache.set(searchQuery, result);
337332
return result;
338333
}
339334
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ dependencies:
2727
googleapis_auth: ^0.2.6
2828
english_words: ^3.1.5
2929
url_launcher: ^4.0.3
30-
expire_cache: ^1.0.4
30+
expire_cache: ^1.0.5
3131

3232
dev_dependencies:
3333
test: ^1.5.1+1

0 commit comments

Comments
 (0)