Skip to content

Commit

Permalink
updated to latest version of example in rx_widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
escamoteur committed Apr 23, 2018
1 parent 30606cf commit ec0cc96
Show file tree
Hide file tree
Showing 19 changed files with 886 additions and 169 deletions.
1 change: 0 additions & 1 deletion .gitignore
Expand Up @@ -8,4 +8,3 @@ build/
ios/.generated/
packages
.flutter-plugins
pubspec.lock
77 changes: 77 additions & 0 deletions analysis_options.yaml
@@ -0,0 +1,77 @@
analyzer:
strong-mode:
implicit-casts: false
errors:
unused_import: error
unused_local_variable: error
dead_code: error
override_on_non_overriding_method: error
exclude:
- example/lib/json/weather_in_cities.g.dart

linter:
rules:
- annotate_overrides
- avoid_empty_else
- avoid_function_literals_in_foreach_calls
- avoid_init_to_null
- avoid_null_checks_in_equality_operators
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_types_as_parameter_names
- avoid_unused_constructor_parameters
- await_only_futures
- camel_case_types
#- cancel_subscriptions
#- cascade_invocations
- comment_references
#- constant_identifier_names
- control_flow_in_finally
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- hash_and_equals
#- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- library_names
- library_prefixes
- list_remove_unrelated_type
- no_adjacent_strings_in_list
- no_duplicate_case_values
- non_constant_identifier_names
- omit_local_variable_types
#- only_throw_errors
- overridden_fields
#- package_api_docs
- package_names
- package_prefixed_library_names
- prefer_adjacent_string_concatenation
- prefer_collection_literals
- prefer_conditional_assignment
#- prefer_const_constructors
- prefer_contains
- prefer_final_fields
- prefer_initializing_formals
#- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
# - prefer_single_quotes
- prefer_typing_uninitialized_variables
- recursive_getters
- slash_for_doc_comments
- super_goes_last
- test_types_in_equals
- throw_in_finally
- type_init_formals
- unawaited_futures
- unnecessary_brace_in_string_interps
- unnecessary_getters_setters
# - unnecessary_lambdas
- unnecessary_null_aware_assignments
- unnecessary_statements
# - unnecessary_this
- unrelated_type_equality_checks
- valid_regexps
12 changes: 0 additions & 12 deletions android.iml

This file was deleted.

17 changes: 0 additions & 17 deletions flutter_weather_demo.iml

This file was deleted.

26 changes: 0 additions & 26 deletions flutter_weather_demo_android.iml

This file was deleted.

20 changes: 13 additions & 7 deletions lib/homepage/homepage.dart
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_weather_demo/homepage/weather_list_view.dart';
import 'package:flutter_weather_demo/keys.dart';
import 'package:flutter_weather_demo/model_provider.dart';
import 'package:flutter_weather_demo/service/weather_entry.dart';
import 'package:making_flutter_more_reactive/homepage/weather_list_view.dart';
import 'package:making_flutter_more_reactive/keys.dart';
import 'package:making_flutter_more_reactive/model_provider.dart';
import 'package:rx_widgets/rx_widgets.dart';

import 'package:making_flutter_more_reactive/service/weather_entry.dart';

class HomePage extends StatefulWidget {
@override
Expand Down Expand Up @@ -39,10 +39,12 @@ class HomePageState extends State<HomePage> {
Expanded(
child:
RxLoader<List<WeatherEntry>>(
key: AppKeys.loadingSpinner,
spinnerKey: AppKeys.loadingSpinner,
radius: 25.0,
commandResults: ModelProvider.of(context).updateWeatherCommand,
dataBuilder: (context, data) => WeatherListView(data ,key: AppKeys.weatherList),
placeHolderBuilder: (context) => Center(key: AppKeys.loaderPlaceHolder, child: Text("No Data")),
errorBuilder: (context, ex) => Center(key: AppKeys.loaderError, child: Text("Error: ${ex.toString()}")),
),
),
Padding(
Expand All @@ -58,8 +60,12 @@ class HomePageState extends State<HomePage> {
onTrue: RaisedButton(
key: AppKeys.updateButtonEnabled,
child: Text("Update"),
onPressed: ModelProvider.of(context).updateWeatherCommand,
),
onPressed: ()
{
_controller.clear();
ModelProvider.of(context).updateWeatherCommand();
}
),
onFalse: RaisedButton(
key: AppKeys.updateButtonDisabled,
child: Text("Please Wait"),
Expand Down
7 changes: 4 additions & 3 deletions lib/homepage/homepage_model.dart
@@ -1,6 +1,7 @@
import 'package:flutter_weather_demo/service/weather_entry.dart';
import 'package:flutter_weather_demo/service/weather_service.dart';

import 'package:rx_command/rx_command.dart';
import 'package:making_flutter_more_reactive/service/weather_service.dart';
import 'package:making_flutter_more_reactive/service/weather_entry.dart';

class HomePageModel {
final WeatherService service;
Expand All @@ -15,7 +16,7 @@ class HomePageModel {
this.service,
);

factory HomePageModel(WeatherService service) {
factory HomePageModel(WeatherService service ) {
// Command expects a bool value when executed and issues the value on it's
// result Observable (stream)
final _switchChangedCommand = RxCommand.createSync3<bool, bool>((b) => b);
Expand Down
6 changes: 3 additions & 3 deletions lib/homepage/weather_list_view.dart
@@ -1,8 +1,8 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_weather_demo/keys.dart';
import 'package:flutter_weather_demo/service/weather_entry.dart';
import 'package:flutter_weather_demo/weather_icons.dart';
import 'package:making_flutter_more_reactive/keys.dart';
import 'package:making_flutter_more_reactive/service/weather_entry.dart';
import 'package:making_flutter_more_reactive/weather_icons.dart';


class WeatherListView extends StatelessWidget {
Expand Down
3 changes: 2 additions & 1 deletion lib/keys.dart
Expand Up @@ -4,11 +4,12 @@ class AppKeys {
static final Key textField = new Key('filter text field');
static final Key empty = new Key('empty container');
static final Key noItems = new Key('noItems');
static final Key loadingError = new Key('loadingError');
static final Key weatherList = new Key('weatherList');
static final Key cityList = new Key('cityList');
static final Key loadingSpinner = new Key('loadingSpinner');
static final Key updateButtonEnabled = new Key('updateButtonEnabled');
static final Key updateButtonDisabled = new Key('updateButtonDisabled');
static final Key loaderPlaceHolder = new Key('loaderPlaceHolder');
static final Key loaderError = new Key('loaderError');
static final Key updateSwitch = new Key('updateSwitch');
}
8 changes: 4 additions & 4 deletions lib/main.dart
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_weather_demo/homepage/homepage.dart';
import 'package:flutter_weather_demo/homepage/homepage_model.dart';
import 'package:flutter_weather_demo/model_provider.dart';
import 'package:flutter_weather_demo/service/weather_service.dart';
import 'package:making_flutter_more_reactive/homepage/homepage.dart';
import 'package:making_flutter_more_reactive/homepage/homepage_model.dart';
import 'package:making_flutter_more_reactive/model_provider.dart';
import 'package:making_flutter_more_reactive/service/weather_service.dart';
import 'package:http/http.dart' as http;

void main() {
Expand Down
3 changes: 2 additions & 1 deletion lib/model_provider.dart
@@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_weather_demo/homepage/homepage_model.dart';
import 'package:making_flutter_more_reactive/homepage/homepage_model.dart';


// InheritedWidgets allow you to propagate values down the Widget Tree.
// it can then be accessed by just writing TheViewModel.of(context)
Expand Down
2 changes: 2 additions & 0 deletions lib/service/json/weather_in_cities.dart
@@ -1,3 +1,5 @@
// ignore_for_file: annotate_overrides

import "package:json_annotation/json_annotation.dart";

part "weather_in_cities.g.dart";
Expand Down
8 changes: 8 additions & 0 deletions lib/service/weather_entry.dart
Expand Up @@ -21,4 +21,12 @@ class WeatherEntry {
temperature = city.main.temp,
description = city.weather[0]?.description,
weatherId = city.weather[0].id;

@override
bool operator == (other) {
return cityName == other.cityName;
}

@override
int get hashCode => cityName.hashCode;
}
6 changes: 3 additions & 3 deletions lib/service/weather_service.dart
@@ -1,8 +1,8 @@
import 'dart:async';
import 'dart:convert';

import 'package:flutter_weather_demo/service/json/weather_in_cities.dart';
import 'package:flutter_weather_demo/service/weather_entry.dart';
import 'package:making_flutter_more_reactive/service/json/weather_in_cities.dart';
import 'package:making_flutter_more_reactive/service/weather_entry.dart';
import 'package:http/http.dart' as http;

class WeatherService {
Expand All @@ -17,7 +17,7 @@ class WeatherService {
final response = await client.get(url);

if (response.statusCode == 200) {
return new WeatherInCities.fromJson(json.decode(response.body))
return new WeatherInCities.fromJson(json.decode(response.body) as Map<String,dynamic>)
.cities
.where((weatherInCity) =>
filter == null ||
Expand Down

0 comments on commit ec0cc96

Please sign in to comment.