Migrate riverpod/flutter_riverpod/hooks_riverpod to null-safety (#292)

This commit is contained in:
Remi Rousselet
2021-01-29 10:14:59 +00:00
committed by GitHub
parent f5cb0a22db
commit abd70baa65
115 changed files with 1206 additions and 1459 deletions

View File

@ -1,8 +1,10 @@
// ignore: import_of_legacy_library_into_null_safe
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
// ignore: import_of_legacy_library_into_null_safe
import 'package:html/parser.dart';
import 'common.dart';
@ -13,8 +15,8 @@ part 'home.freezed.dart';
@freezed
abstract class QuestionsResponse with _$QuestionsResponse {
factory QuestionsResponse({
@required List<Question> items,
@required int total,
required List<Question> items,
required int total,
}) = _QuestionsResponse;
factory QuestionsResponse.fromJson(Map<String, Object> json) =>
@ -25,18 +27,18 @@ abstract class QuestionsResponse with _$QuestionsResponse {
abstract class Question with _$Question {
@JsonSerializable(fieldRename: FieldRename.snake)
factory Question({
@required List<String> tags,
@required int viewCount,
@required int score,
int bountyAmount,
int acceptedAnswerId,
@required Owner owner,
@required int answerCount,
@required @TimestampParser() DateTime creationDate,
@required int questionId,
@required String link,
@required String title,
@required String body,
required List<String> tags,
required int viewCount,
required int score,
int? bountyAmount,
int? acceptedAnswerId,
required Owner owner,
required int answerCount,
@TimestampParser() required DateTime creationDate,
required int questionId,
required String link,
required String title,
required String body,
}) = _Question;
factory Question.fromJson(Map<String, Object> json) =>
@ -97,15 +99,15 @@ final questionsCountProvider = Provider.autoDispose((ref) {
@freezed
abstract class QuestionTheme with _$QuestionTheme {
const factory QuestionTheme({
@required TextStyle titleStyle,
@required TextStyle descriptionStyle,
required TextStyle titleStyle,
required TextStyle descriptionStyle,
}) = _QuestionTheme;
}
final questionThemeProvider = ScopedProvider<QuestionTheme>(null);
class MyHomePage extends HookWidget {
const MyHomePage({Key key}) : super(key: key);
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -162,7 +164,7 @@ class MyHomePage extends HookWidget {
final currentQuestion = ScopedProvider<AsyncValue<Question>>(null);
class QuestionItem extends HookWidget {
const QuestionItem({Key key}) : super(key: key);
const QuestionItem({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -173,7 +175,7 @@ class QuestionItem extends HookWidget {
return const Center(child: Text('loading'));
}
final data = question.data.value;
final data = question.data!.value;
return ListTile(
title: Text(