diff --git a/examples/github_search/common_github_search/lib/src/github_cache.dart b/examples/github_search/common_github_search/lib/src/github_cache.dart index 90fb4264eba..4cbafbba8c1 100644 --- a/examples/github_search/common_github_search/lib/src/github_cache.dart +++ b/examples/github_search/common_github_search/lib/src/github_cache.dart @@ -3,7 +3,7 @@ import 'package:common_github_search/common_github_search.dart'; class GithubCache { final _cache = {}; - SearchResult get(String term) => _cache[term]; + SearchResult? get(String term) => _cache[term]; void set(String term, SearchResult result) => _cache[term] = result; diff --git a/examples/github_search/common_github_search/lib/src/github_client.dart b/examples/github_search/common_github_search/lib/src/github_client.dart index 0d4511d5bfa..38c3aaa2475 100644 --- a/examples/github_search/common_github_search/lib/src/github_client.dart +++ b/examples/github_search/common_github_search/lib/src/github_client.dart @@ -5,14 +5,14 @@ import 'package:http/http.dart' as http; import 'package:common_github_search/common_github_search.dart'; class GithubClient { - final String baseUrl; - final http.Client httpClient; - GithubClient({ - http.Client httpClient, + http.Client? httpClient, this.baseUrl = "https://api.github.com/search/repositories?q=", }) : this.httpClient = httpClient ?? http.Client(); + final String baseUrl; + final http.Client httpClient; + Future search(String term) async { final response = await httpClient.get(Uri.parse("$baseUrl$term")); final results = json.decode(response.body); diff --git a/examples/github_search/common_github_search/lib/src/github_repository.dart b/examples/github_search/common_github_search/lib/src/github_repository.dart index 21d5ed599f7..faabb5e69d8 100644 --- a/examples/github_search/common_github_search/lib/src/github_repository.dart +++ b/examples/github_search/common_github_search/lib/src/github_repository.dart @@ -3,18 +3,18 @@ import 'dart:async'; import 'package:common_github_search/common_github_search.dart'; class GithubRepository { + const GithubRepository(this.cache, this.client); + final GithubCache cache; final GithubClient client; - GithubRepository(this.cache, this.client); - Future search(String term) async { - if (cache.contains(term)) { - return cache.get(term); - } else { - final result = await client.search(term); - cache.set(term, result); - return result; + final cachedResult = cache.get(term); + if (cachedResult != null) { + return cachedResult; } + final result = await client.search(term); + cache.set(term, result); + return result; } } diff --git a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_bloc.dart b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_bloc.dart index 1b0c552f371..2cdb510ee80 100644 --- a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_bloc.dart +++ b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_bloc.dart @@ -1,17 +1,15 @@ import 'dart:async'; - -import 'package:meta/meta.dart'; import 'package:rxdart/rxdart.dart'; import 'package:bloc/bloc.dart'; import 'package:common_github_search/common_github_search.dart'; class GithubSearchBloc extends Bloc { - final GithubRepository githubRepository; - - GithubSearchBloc({@required this.githubRepository}) + GithubSearchBloc({required this.githubRepository}) : super(SearchStateEmpty()); + final GithubRepository githubRepository; + @override Stream> transformEvents( Stream events, @@ -28,13 +26,12 @@ class GithubSearchBloc extends Bloc { @override Stream mapEventToState(GithubSearchEvent event) async* { if (event is TextChanged) { - final String searchTerm = event.text; + final searchTerm = event.text; if (searchTerm.isEmpty) { yield SearchStateEmpty(); } else { yield SearchStateLoading(); try { - await Future.delayed(Duration(seconds: 2)); final results = await githubRepository.search(searchTerm); yield SearchStateSuccess(results.items); } catch (error) { diff --git a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_event.dart b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_event.dart index 6ff3de1b8d2..078834e10e9 100644 --- a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_event.dart +++ b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_event.dart @@ -5,9 +5,9 @@ abstract class GithubSearchEvent extends Equatable { } class TextChanged extends GithubSearchEvent { - final String text; + const TextChanged({required this.text}); - const TextChanged({this.text}); + final String text; @override List get props => [text]; diff --git a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_state.dart b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_state.dart index f1f3343a239..973882132d4 100644 --- a/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_state.dart +++ b/examples/github_search/common_github_search/lib/src/github_search_bloc/github_search_state.dart @@ -14,10 +14,10 @@ class SearchStateEmpty extends GithubSearchState {} class SearchStateLoading extends GithubSearchState {} class SearchStateSuccess extends GithubSearchState { - final List items; - const SearchStateSuccess(this.items); + final List items; + @override List get props => [items]; @@ -26,10 +26,10 @@ class SearchStateSuccess extends GithubSearchState { } class SearchStateError extends GithubSearchState { - final String error; - const SearchStateError(this.error); + final String error; + @override List get props => [error]; } diff --git a/examples/github_search/common_github_search/lib/src/models/github_user.dart b/examples/github_search/common_github_search/lib/src/models/github_user.dart index 9d9abe97425..2239c638350 100644 --- a/examples/github_search/common_github_search/lib/src/models/github_user.dart +++ b/examples/github_search/common_github_search/lib/src/models/github_user.dart @@ -1,9 +1,9 @@ class GithubUser { + const GithubUser({required this.login, required this.avatarUrl}); + final String login; final String avatarUrl; - const GithubUser({this.login, this.avatarUrl}); - static GithubUser fromJson(dynamic json) { return GithubUser( login: json['login'] as String, diff --git a/examples/github_search/common_github_search/lib/src/models/search_result.dart b/examples/github_search/common_github_search/lib/src/models/search_result.dart index f7ed1b46752..c816beacd27 100644 --- a/examples/github_search/common_github_search/lib/src/models/search_result.dart +++ b/examples/github_search/common_github_search/lib/src/models/search_result.dart @@ -1,9 +1,9 @@ import 'package:common_github_search/common_github_search.dart'; class SearchResult { - final List items; + const SearchResult({required this.items}); - const SearchResult({this.items}); + final List items; static SearchResult fromJson(Map json) { final items = (json['items'] as List) diff --git a/examples/github_search/common_github_search/lib/src/models/search_result_error.dart b/examples/github_search/common_github_search/lib/src/models/search_result_error.dart index 60f550bb3fd..47edfab1941 100644 --- a/examples/github_search/common_github_search/lib/src/models/search_result_error.dart +++ b/examples/github_search/common_github_search/lib/src/models/search_result_error.dart @@ -1,7 +1,7 @@ class SearchResultError { - final String message; + const SearchResultError({required this.message}); - const SearchResultError({this.message}); + final String message; static SearchResultError fromJson(dynamic json) { return SearchResultError( diff --git a/examples/github_search/common_github_search/lib/src/models/search_result_item.dart b/examples/github_search/common_github_search/lib/src/models/search_result_item.dart index 2c958fd5e56..ddc085fe1c5 100644 --- a/examples/github_search/common_github_search/lib/src/models/search_result_item.dart +++ b/examples/github_search/common_github_search/lib/src/models/search_result_item.dart @@ -1,12 +1,16 @@ import 'package:common_github_search/common_github_search.dart'; class SearchResultItem { + const SearchResultItem({ + required this.fullName, + required this.htmlUrl, + required this.owner, + }); + final String fullName; final String htmlUrl; final GithubUser owner; - const SearchResultItem({this.fullName, this.htmlUrl, this.owner}); - static SearchResultItem fromJson(dynamic json) { return SearchResultItem( fullName: json['full_name'] as String, diff --git a/examples/github_search/common_github_search/pubspec.yaml b/examples/github_search/common_github_search/pubspec.yaml index c9ed88d083c..a207b42e9c0 100644 --- a/examples/github_search/common_github_search/pubspec.yaml +++ b/examples/github_search/common_github_search/pubspec.yaml @@ -4,12 +4,11 @@ version: 1.0.0+1 publish_to: none environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" dependencies: - meta: ^1.1.8 bloc: path: ../../../packages/bloc - equatable: ^1.2.5 - http: ^0.12.0 - rxdart: ^0.24.0 + equatable: ^2.0.0-nullsafety.3 + http: ^0.13.0 + rxdart: ^0.26.0-nullsafety.1 diff --git a/examples/github_search/flutter_github_search/ios/Flutter/Debug.xcconfig b/examples/github_search/flutter_github_search/ios/Flutter/Debug.xcconfig index e8efba11468..b2f5fae9c25 100644 --- a/examples/github_search/flutter_github_search/ios/Flutter/Debug.xcconfig +++ b/examples/github_search/flutter_github_search/ios/Flutter/Debug.xcconfig @@ -1,2 +1,3 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/examples/github_search/flutter_github_search/ios/Flutter/Release.xcconfig b/examples/github_search/flutter_github_search/ios/Flutter/Release.xcconfig index 399e9340e6f..88c29144c83 100644 --- a/examples/github_search/flutter_github_search/ios/Flutter/Release.xcconfig +++ b/examples/github_search/flutter_github_search/ios/Flutter/Release.xcconfig @@ -1,2 +1,3 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/examples/github_search/flutter_github_search/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/github_search/flutter_github_search/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a16ed0..919434a6254 100644 --- a/examples/github_search/flutter_github_search/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/examples/github_search/flutter_github_search/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/examples/github_search/flutter_github_search/lib/main.dart b/examples/github_search/flutter_github_search/lib/main.dart index e423a2cba1b..bfca38ece97 100644 --- a/examples/github_search/flutter_github_search/lib/main.dart +++ b/examples/github_search/flutter_github_search/lib/main.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; - -import 'package:meta/meta.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:common_github_search/common_github_search.dart'; import 'package:flutter_github_search/search_form.dart'; @@ -15,13 +13,13 @@ void main() { } class App extends StatelessWidget { - final GithubRepository githubRepository; - const App({ - Key key, - @required this.githubRepository, + Key? key, + required this.githubRepository, }) : super(key: key); + final GithubRepository githubRepository; + @override Widget build(BuildContext context) { return MaterialApp( diff --git a/examples/github_search/flutter_github_search/lib/search_form.dart b/examples/github_search/flutter_github_search/lib/search_form.dart index feab1b3a402..b2ffc30750a 100644 --- a/examples/github_search/flutter_github_search/lib/search_form.dart +++ b/examples/github_search/flutter_github_search/lib/search_form.dart @@ -8,7 +8,10 @@ class SearchForm extends StatelessWidget { @override Widget build(BuildContext context) { return Column( - children: [_SearchBar(), _SearchBody()], + children: [ + _SearchBar(), + _SearchBody(), + ], ); } } @@ -20,12 +23,12 @@ class _SearchBar extends StatefulWidget { class _SearchBarState extends State<_SearchBar> { final _textController = TextEditingController(); - GithubSearchBloc _githubSearchBloc; + late GithubSearchBloc _githubSearchBloc; @override void initState() { super.initState(); - _githubSearchBloc = BlocProvider.of(context); + _githubSearchBloc = context.read(); } @override @@ -85,9 +88,9 @@ class _SearchBody extends StatelessWidget { } class _SearchResults extends StatelessWidget { - final List items; + const _SearchResults({Key? key, required this.items}) : super(key: key); - const _SearchResults({Key key, this.items}) : super(key: key); + final List items; @override Widget build(BuildContext context) { @@ -101,9 +104,9 @@ class _SearchResults extends StatelessWidget { } class _SearchResultItem extends StatelessWidget { - final SearchResultItem item; + const _SearchResultItem({Key? key, required this.item}) : super(key: key); - const _SearchResultItem({Key key, @required this.item}) : super(key: key); + final SearchResultItem item; @override Widget build(BuildContext context) { diff --git a/examples/github_search/flutter_github_search/pubspec.yaml b/examples/github_search/flutter_github_search/pubspec.yaml index 56d618221a0..7d2ee31924e 100644 --- a/examples/github_search/flutter_github_search/pubspec.yaml +++ b/examples/github_search/flutter_github_search/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0+1 publish_to: none environment: - sdk: ">=2.6.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: path: ../../../packages/bloc flutter_bloc: path: ../../../packages/flutter_bloc - url_launcher: ^5.4.1 + url_launcher: ^6.0.0-nullsafety.6 common_github_search: path: ../common_github_search