1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-09-19 05:48:54 +00:00

Start to fix null safety migration errors

This commit is contained in:
2022-03-10 19:39:57 +01:00
parent ab2c5da0da
commit 3a997cdc56
258 changed files with 2879 additions and 2912 deletions

View File

@@ -13,8 +13,8 @@ class AboutGroupSection extends StatelessWidget {
final AdvancedGroupInfo group;
const AboutGroupSection({
Key key,
@required this.group,
Key? key,
required this.group,
}) : assert(group != null),
super(key: key);
@@ -25,7 +25,7 @@ class AboutGroupSection extends StatelessWidget {
group.hasURL
? ListTile(
leading: Icon(Icons.link),
title: Text(tr("URL")),
title: Text(tr("URL")!),
subtitle: Text(group.url),
onTap: () => launch(group.url),
)
@@ -35,7 +35,7 @@ class AboutGroupSection extends StatelessWidget {
group.hasDescription
? ListTile(
leading: Icon(Icons.note),
title: Text(tr("Description")),
title: Text(tr("Description")!),
subtitle: Text(group.description),
)
: Container(),
@@ -44,64 +44,64 @@ class AboutGroupSection extends StatelessWidget {
ListTile(
leading: Icon(Icons.access_time),
title: Text("Created"),
subtitle: Text(diffTimeFromNowToStr(group.timeCreate)),
subtitle: Text(diffTimeFromNowToStr(group.timeCreate!)!),
),
// Number of members
ListTile(
leading: Icon(Icons.group),
title: Text(tr("Members")),
title: Text(tr("Members")!),
subtitle: Text(
tr("%1% members", args: {"1": group.numberMembers.toString()})),
tr("%1% members", args: {"1": group.numberMembers.toString()})!),
),
// Who can create posts
ListTile(
leading: Icon(Icons.add),
title: Text(tr("Who can create posts")),
title: Text(tr("Who can create posts")!),
subtitle: Text(
group.postCreationLevel == GroupPostCreationLevel.MEMBERS
? tr("Every members")
: tr("Only moderators and administrators")),
? tr("Every members")!
: tr("Only moderators and administrators")!),
),
// Registration process
ListTile(
leading: Icon(Icons.login),
title: Text(tr("Registration process")),
title: Text(tr("Registration process")!),
subtitle: Text(group.registrationLevel ==
GroupRegistrationLevel.CLOSED
? tr("On invitation only")
? tr("On invitation only")!
: (group.registrationLevel == GroupRegistrationLevel.MODERATED
? tr("A moderator has to approve requests")
: tr("Anyone can join the group without approval"))),
? tr("A moderator has to approve requests")!
: tr("Anyone can join the group without approval")!)),
),
// Group visibility
ListTile(
leading: Icon(Icons.remove_red_eye),
title: Text(tr("Visibility")),
title: Text(tr("Visibility")!),
subtitle: Text(group.visibilityLevel == GroupVisibilityLevel.SECRETE
? tr("Secrete group")
? tr("Secrete group")!
: (group.visibilityLevel == GroupVisibilityLevel.PRIVATE
? tr("Private group")
: tr("Open group"))),
? tr("Private group")!
: tr("Open group")!)),
),
// Group members visibility
ListTile(
leading: Icon(Icons.remove_red_eye),
title: Text(tr("Members list visibility")),
title: Text(tr("Members list visibility")!),
subtitle:
Text(group.isMembersListPublic ? tr("Public") : tr("Private")),
Text(group.isMembersListPublic! ? tr("Public")! : tr("Private")!),
),
group.isForezGroup
? // Group members visibility
ListTile(
leading: Icon(Icons.info_outline),
title: Text(tr("Forez group")),
subtitle: Text(tr("Forez special features enabled")),
title: Text(tr("Forez group")!),
subtitle: Text(tr("Forez special features enabled")!),
)
: Container(),
],

View File

@@ -16,8 +16,8 @@ class ForezPresenceSection extends StatefulWidget {
final int groupID;
const ForezPresenceSection({
Key key,
@required this.groupID,
Key? key,
required this.groupID,
}) : assert(groupID != null),
super(key: key);
@@ -26,17 +26,17 @@ class ForezPresenceSection extends StatefulWidget {
}
class _ForezPresenceSectionState extends State<ForezPresenceSection> {
PresenceSet _presences;
UsersList _users;
PresenceSet? _presences;
late UsersList _users;
DateTime _currentDay = DateTime.now();
List<int> get _currentListOfUsers => _presences.getUsersAtDate(_currentDay);
List<int> get _currentListOfUsers => _presences!.getUsersAtDate(_currentDay);
Future<void> _refresh() async {
await ForezPresenceHelper.refreshCache(widget.groupID);
_presences = await ForezPresenceHelper.getAll(widget.groupID);
_users = await UsersHelper().getList(_presences.usersID);
_users = await UsersHelper().getList(_presences!.usersID);
}
@override
@@ -71,7 +71,7 @@ class _ForezPresenceSectionState extends State<ForezPresenceSection> {
}
Widget _buildCalendar() => PresenceCalendarWidget(
presenceSet: _presences,
presenceSet: _presences!,
mode: CalendarDisplayMode.MULTIPLE_USERS,
selectedDay: _currentDay,
onDayClicked: _selectDay,

View File

@@ -12,8 +12,8 @@ class GroupConversationSection extends StatelessWidget {
final Conversation conv;
const GroupConversationSection({
Key key,
@required this.conv,
Key? key,
required this.conv,
}) : assert(conv != null),
super(key: key);
@@ -21,7 +21,7 @@ class GroupConversationSection extends StatelessWidget {
Widget build(BuildContext context) => Stack(
children: [
ConversationScreen(
conversationID: conv.id,
conversationID: conv.id!,
),
Positioned(
right: 1.0,
@@ -31,12 +31,12 @@ class GroupConversationSection extends StatelessWidget {
? IconButton(
icon: Icon(Icons.phone),
onPressed: () =>
MainController.of(context).startCall(conv.id),
MainController.of(context)!.startCall(conv.id!),
)
: Container(),
IconButton(
icon: Icon(Icons.settings),
onPressed: () => MainController.of(context)
onPressed: () => MainController.of(context)!
.openConversationSettingsRoute(conv),
),
],

View File

@@ -21,7 +21,7 @@ import 'package:flutter/material.dart';
class GroupMembersSection extends StatefulWidget {
final int groupID;
const GroupMembersSection({Key key, this.groupID})
const GroupMembersSection({Key? key, required this.groupID})
: assert(groupID != null),
super(key: key);
@@ -31,9 +31,9 @@ class GroupMembersSection extends StatefulWidget {
class _GroupMembersSectionState extends State<GroupMembersSection> {
final _key = GlobalKey<AsyncScreenWidgetState>();
Group _group;
GroupMembersList _members;
UsersList _users;
late Group _group;
late GroupMembersList _members;
late UsersList _users;
Future<void> _refresh() async {
final group = await GroupsHelper().getSingle(widget.groupID, force: true);
@@ -50,7 +50,7 @@ class _GroupMembersSectionState extends State<GroupMembersSection> {
key: _key,
onReload: _refresh,
onBuild: _buildBodyContent,
errorMessage: tr("Could not load the list of members of this group!"),
errorMessage: tr("Could not load the list of members of this group!")!,
showOldDataWhileUpdating: true,
);
@@ -70,7 +70,7 @@ class _GroupMembersSectionState extends State<GroupMembersSection> {
group: _group,
membership: membership,
user: user,
onUpdated: () => _key.currentState.refresh(),
onUpdated: () => _key.currentState!.refresh(),
);
}
@@ -93,40 +93,40 @@ class _GroupMembersSectionState extends State<GroupMembersSection> {
await GroupsHelper.sendInvitation(widget.groupID, userID);
} catch (e, s) {
print("Could not invite a user! $e\n$s");
showSimpleSnack(context, tr("Could not invite a user!"));
showSimpleSnack(context, tr("Could not invite a user!")!);
}
_key.currentState.refresh();
_key.currentState!.refresh();
}
}
List<MultiChoiceEntry<GroupMembershipLevel>> get _membershipLevels => [
MultiChoiceEntry(
id: GroupMembershipLevel.ADMINISTRATOR,
title: tr("Administrator"),
title: tr("Administrator")!,
subtitle: tr("Can change members privileges and group settings")),
MultiChoiceEntry(
id: GroupMembershipLevel.MODERATOR,
title: tr("Moderator"),
title: tr("Moderator")!,
subtitle: tr(
"Can always create posts, invite users and respond to membership request")),
MultiChoiceEntry(
id: GroupMembershipLevel.MEMBER,
title: tr("Member"),
title: tr("Member")!,
subtitle: tr("Can access to all group posts")),
MultiChoiceEntry(
id: GroupMembershipLevel.PENDING,
title: tr("Requested"),
title: tr("Requested")!,
hidden: true,
),
MultiChoiceEntry(
id: GroupMembershipLevel.INVITED,
title: tr("Invited"),
title: tr("Invited")!,
hidden: true,
),
MultiChoiceEntry(
id: GroupMembershipLevel.VISITOR,
title: tr("Visitor"),
title: tr("Visitor")!,
hidden: true,
),
];
@@ -138,11 +138,11 @@ class _GroupMembershipTile extends StatefulWidget {
final void Function() onUpdated;
const _GroupMembershipTile({
Key key,
@required this.group,
@required this.membership,
@required this.user,
@required this.onUpdated,
Key? key,
required this.group,
required this.membership,
required this.user,
required this.onUpdated,
}) : assert(group != null),
assert(membership != null),
assert(user != null),
@@ -176,7 +176,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
);
}
Widget _buildTrailing() {
Widget? _buildTrailing() {
switch (widget.membership.level) {
case GroupMembershipLevel.ADMINISTRATOR:
case GroupMembershipLevel.MODERATOR:
@@ -205,14 +205,14 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
itemBuilder: (c) => [
// Change membership level
PopupMenuItem(
child: Text(tr("Change level")),
child: Text(tr("Change level")!),
enabled: !_isCurrentUser && widget.group.isAdmin,
value: _MemberMenuOptions.CHANGE_LEVEL,
),
// Remove membership
PopupMenuItem(
child: Text(tr("Remove")),
child: Text(tr("Remove")!),
value: _MemberMenuOptions.DELETE,
enabled: !_isCurrentUser,
),
@@ -247,7 +247,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
await GroupsHelper.setNewLevel(groupID, memberID, newLevel);
} catch (e, s) {
print("Could not change group membership level! $e\n$s");
showSimpleSnack(context, tr("Could not change group membership level!"));
showSimpleSnack(context, tr("Could not change group membership level!")!);
}
widget.onUpdated();
@@ -263,7 +263,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
await GroupsHelper.removeMemberFromGroup(groupID, memberID);
} catch (e, s) {
print("Could not remove membership! $e\n$s");
showSimpleSnack(context, tr("Could not remove this membership!"));
showSimpleSnack(context, tr("Could not remove this membership!")!);
}
widget.onUpdated();
@@ -272,7 +272,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
Widget _buildInvitedCase() {
return MaterialButton(
onPressed: _cancelMembership,
child: Text(tr("Cancel").toUpperCase()),
child: Text(tr("Cancel")!.toUpperCase()),
textColor: Colors.red,
);
}
@@ -282,7 +282,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
await GroupsHelper.cancelInvitation(groupID, memberID);
} catch (e, s) {
print("Could not cancel invitation! $e\n$s");
showSimpleSnack(context, tr("Could not cancel invitation!"));
showSimpleSnack(context, tr("Could not cancel invitation!")!);
}
widget.onUpdated();
@@ -294,12 +294,12 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
children: <Widget>[
MaterialButton(
onPressed: () => _respondRequest(false),
child: Text(tr("Reject").toUpperCase()),
child: Text(tr("Reject")!.toUpperCase()),
textColor: Colors.red,
),
MaterialButton(
onPressed: () => _respondRequest(true),
child: Text(tr("Accept").toUpperCase()),
child: Text(tr("Accept")!.toUpperCase()),
textColor: Colors.green,
)
],
@@ -311,7 +311,7 @@ class __GroupMembershipTileState extends State<_GroupMembershipTile> {
await GroupsHelper.respondRequest(groupID, memberID, accept);
} catch (e, s) {
print("Could not respond to membership request! $e\n$s");
showSimpleSnack(context, tr("Could not respond to membership request!"));
showSimpleSnack(context, tr("Could not respond to membership request!")!);
}
widget.onUpdated();

View File

@@ -12,8 +12,8 @@ class GroupPostsSection extends StatefulWidget {
final AdvancedGroupInfo group;
const GroupPostsSection({
Key key,
@required this.group,
Key? key,
required this.group,
}) : assert(group != null),
super(key: key);
@@ -31,7 +31,7 @@ class _GroupPostsSectionState extends State<GroupPostsSection> {
return PostCreateFormWidget(
postTarget: PostTarget.GROUP_PAGE,
targetID: widget.group.id,
onCreated: () => _postsKey.currentState.loadPostsList(getOlder: false),
onCreated: () => _postsKey.currentState!.loadPostsList(getOlder: false),
);
}