+
Skip to content

Null safety migration #33

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Aug 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip
5 changes: 4 additions & 1 deletion ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 53;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand Down Expand Up @@ -206,10 +206,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
Expand All @@ -220,6 +222,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
Expand Down
2 changes: 2 additions & 0 deletions ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,7 @@
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>
10 changes: 5 additions & 5 deletions lib/internationalization/localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ class TOALocalizations {

final Locale locale;

static TOALocalizations of(BuildContext context) {
static TOALocalizations? of(BuildContext context) {
return Localizations.of<TOALocalizations>(context, TOALocalizations);
}

Map<String, dynamic> english;
Map<String, dynamic> translations;
Map<String, dynamic>? english;
Map<String, dynamic>? translations;

Future<bool> load() async {
String data = await rootBundle.loadString(
Expand All @@ -32,7 +32,7 @@ class TOALocalizations {
return true;
}

String get(String key, {bool english = false, String defaultValue}) {
String get(String key, {bool english = false, String? defaultValue}) {
if (defaultValue == null) {
defaultValue = key;
}
Expand All @@ -46,7 +46,7 @@ class TOALocalizations {
}

bool isRTL() {
return this.translations['config']['direction'].toString().toUpperCase() == 'RTL';
return this.translations!['config']['direction'].toString().toUpperCase() == 'RTL';
}

TextDirection getTextDirection() {
Expand Down
5 changes: 4 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import './ui/colors.dart' as TOAColors;
import './ui/views/events/events-list-page.dart';

Future<void> main() async {
FlutterError.onError = (details) {
FlutterError.presentError(details);
};
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
Expand Down Expand Up @@ -64,7 +67,7 @@ class MyApp extends StatelessWidget {
GlobalWidgetsLocalizations.delegate
],
localeResolutionCallback: (
Locale locale,
Locale? locale,
Iterable<Locale> supportedLocales,
) {
// return supportedLocales.elementAt(1); // Debug Hebrew
Expand Down
20 changes: 10 additions & 10 deletions lib/models/award-recipient.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ import 'package:toa_flutter/models/award.dart';
import 'package:toa_flutter/models/team.dart';

class AwardRecipient {
AwardRecipient({
AwardRecipient(
this.teamKey, {
this.awardsKey,
this.eventKey,
this.awardKey,
this.teamKey,
this.receiverName,
this.awardName,
this.award,
this.team
});

final String awardsKey;
final String eventKey;
final String awardKey;
final String? awardsKey;
final String? eventKey;
final String? awardKey;
final String teamKey;
final String receiverName;
final String awardName;
final Award award; // unused?
final Team team;
final String? receiverName;
final String? awardName;
final Award? award; // unused?
final Team? team;

static List<AwardRecipient> allFromResponse(String response) {
return jsonDecode(response)
Expand All @@ -32,10 +32,10 @@ class AwardRecipient {

static AwardRecipient fromMap(Map map) {
return AwardRecipient(
map['team_key'],
awardsKey: map['awards_key'],
eventKey: map['event_key'],
awardKey: map['award_key'],
teamKey: map['team_key'],
receiverName: map['receiver_name'],
awardName: map['award_name'],
// award: Award.fromMap(map['award']),
Expand Down
8 changes: 4 additions & 4 deletions lib/models/award.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ class Award {
this.displayOrder
});

final String awardKey;
final int awardType;
final String awardDescription;
final int displayOrder;
final String? awardKey;
final int? awardType;
final String? awardDescription;
final int? displayOrder;

static List<Award> allFromResponse(String response) {
return jsonDecode(response)
Expand Down
2 changes: 1 addition & 1 deletion lib/models/content-tab.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';

class ContentTab {
const ContentTab({this.key, this.title, this.content});
const ContentTab({required this.key, required this.title, required this.content});

final String key;
final String title;
Expand Down
12 changes: 6 additions & 6 deletions lib/models/event-participant.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import 'package:toa_flutter/models/team.dart';

class EventParticipant {
EventParticipant({
this.eventParticipantKey,
this.eventKey,
this.teamKey,
this.isActive,
required this.eventParticipantKey,
required this.eventKey,
required this.teamKey,
required this.isActive,
this.cardStatus,
this.team
});
Expand All @@ -15,8 +15,8 @@ class EventParticipant {
final String eventKey;
final String teamKey;
final bool isActive;
final String cardStatus;
final Team team;
final String? cardStatus;
final Team? team;

static List<EventParticipant> allFromResponse(String response) {
return jsonDecode(response)
Expand Down
12 changes: 6 additions & 6 deletions lib/models/event-settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import 'dart:convert';

class EventSettings {

String admin;
bool isFavorite;
bool matchScored;
bool scheduleUpdated;
bool awardsPosted;
bool alliancesPosted;
String? admin;
bool? isFavorite;
bool? matchScored;
bool? scheduleUpdated;
bool? awardsPosted;
bool? alliancesPosted;

EventSettings({
this.admin,
Expand Down
4 changes: 2 additions & 2 deletions lib/models/event-type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ class EventType {
this.description,
});

final String eventTypeKey;
final String description;
final String? eventTypeKey;
final String? description;

static List<EventType> allFromResponse(String response) {
return jsonDecode(response)
Expand Down
62 changes: 31 additions & 31 deletions lib/models/event.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,32 +32,32 @@ class Event {
this.advanceEvent,
});

final String eventKey;
final String seasonKey;
final String regionKey;
final String leagueKey;
final String eventCode;
final int eventRegionNumber;
final String divisionKey;
final String eventTypeKey;
final String eventName;
final String divisionName;
final String startDate;
final String endDate;
final String weekKey;
final String city;
final String state;
final String country;
final String venue;
final String website;
final String timezone;
final int activeTournamentLevel;
final bool isActive;
final bool isfinal;
final int allianceCount;
final int fieldCount;
final int advanceSpots;
final String advanceEvent;
final String? eventKey;
final String? seasonKey;
final String? regionKey;
final String? leagueKey;
final String? eventCode;
final int? eventRegionNumber;
final String? divisionKey;
final String? eventTypeKey;
final String? eventName;
final String? divisionName;
final String? startDate;
final String? endDate;
final String? weekKey;
final String? city;
final String? state;
final String? country;
final String? venue;
final String? website;
final String? timezone;
final int? activeTournamentLevel;
final bool? isActive;
final bool? isfinal;
final int? allianceCount;
final int? fieldCount;
final int? advanceSpots;
final String? advanceEvent;

static List<Event> allFromResponse(String response) {
return jsonDecode(response)
Expand Down Expand Up @@ -135,11 +135,11 @@ class Event {
}

DateTime getStartDate() {
return DateTime.parse(startDate);
return DateTime.parse(startDate!);
}

DateTime getEndDate() {
return DateTime.parse(endDate);
return DateTime.parse(endDate!);
}

String getDateString(BuildContext context) {
Expand All @@ -151,14 +151,14 @@ class Event {
}

String getShortLocation() {
return city + ", " + (state != null && state.isNotEmpty ? state + ", " : "") + country;
return city! + ", " + (state != null && state!.isNotEmpty ? state! + ", " : "") + country!;
}

String getFullLocation() {
return (venue != null && venue.isNotEmpty ? venue + ", " : "") + city + ", " + (state != null && state.isNotEmpty ? state + ", " : "") + country;
return (venue != null && venue!.isNotEmpty ? venue! + ", " : "") + city! + ", " + (state != null && state!.isNotEmpty ? state! + ", " : "") + country!;
}

String getFullName() {
return eventName + (divisionName != null ? " - $divisionName Division" : "");
return eventName! + (divisionName != null ? " - $divisionName Division" : "");
}
}
4 changes: 2 additions & 2 deletions lib/models/game-specifics/2122-helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import 'package:toa_flutter/models/match.dart';
abstract class FreightFrenzyHelper {
static List<int> getPenaltyPoints(Match m) {
return [
m.gameData.redMajPen * -20 + m.gameData.redMinPen * -5,
m.gameData.blueMajPen * -20 + m.gameData.blueMinPen * -5,
m.gameData!.redMajPen! * -20 + m.gameData!.redMinPen! * -5,
m.gameData!.blueMajPen! * -20 + m.gameData!.blueMinPen! * -5,
];
}
}
28 changes: 14 additions & 14 deletions lib/models/game-specifics/2223-helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,36 @@ import 'package:toa_flutter/providers/layouts.dart';
import 'package:toa_flutter/ui/widgets/match-breakdown-row.dart';

abstract class PowerPlayHelper {
static List<int> getPenaltyPoints(Match m) {
static List<int?> getPenaltyPoints(Match m) {
return [
m.gameData.blue['penalty_points_comitted'],
m.gameData.red['penalty_points_comitted']
m.gameData!.blue['penalty_points_comitted'],
m.gameData!.red['penalty_points_comitted']
];
}

static List<String> getAutoNav(
TOALocalizations local, Map<String, dynamic> alliance) {
TOALocalizations? local, Map<String, dynamic>? alliance) {
List<String> navs = [];
for (int i = 1; i < 3; i++) {
String l = alliance['auto_robot_${i}'];
String? l = alliance!['auto_robot_${i}'];

if (alliance['init_signal_sleeve_${i}'] && l == 'SIGNAL_ZONE') {
l = 'CUSTOM_SIGNAL_ZONE';
}

navs.add(local.get('breakdowns.powerplay.${l.toLowerCase()}'));
navs.add(local!.get('breakdowns.powerplay.${l!.toLowerCase()}'));
}
return navs;
}

static int junctionsOwned(Map<String, dynamic> alliance) {
static int? junctionsOwned(Map<String, dynamic> alliance) {
return alliance['owned_junctions'] - alliance['beacons'];
}

static List<Widget> customBreakdownRow(MatchBreakdownLayoutElement e,
MatchDetails details, TOALocalizations local) {
final Map<String, dynamic> red = details.red;
final Map<String, dynamic> blue = details.blue;
MatchDetails details, TOALocalizations? local) {
final Map<String, dynamic>? red = details.red;
final Map<String, dynamic>? blue = details.blue;

switch (e.name) {
case 'powerplay.auto_nav':
Expand All @@ -44,7 +44,7 @@ abstract class PowerPlayHelper {
return List.generate(
2,
(i) => MatchBreakdownRow(
name: local.get('breakdowns.powerplay.robot_${i + 1}_navigated'),
name: local!.get('breakdowns.powerplay.robot_${i + 1}_navigated'),
red: redNav[i],
blue: blueNav[i],
text: true,
Expand All @@ -53,9 +53,9 @@ abstract class PowerPlayHelper {
case 'powerplay.junctions_owned_cone':
return [
MatchBreakdownRow(
name: local.get('breakdowns.powerplay.junctions_owned_cone'),
red: PowerPlayHelper.junctionsOwned(red),
blue: PowerPlayHelper.junctionsOwned(blue),
name: local!.get('breakdowns.powerplay.junctions_owned_cone'),
red: PowerPlayHelper.junctionsOwned(red!),
blue: PowerPlayHelper.junctionsOwned(blue!),
points: 3,
)
];
Expand Down
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载