fixed warnings (super.key, etc)

This commit is contained in:
Kima
2023-12-12 22:57:16 +01:00
parent fc3f538e6b
commit 6bac82f7d6
46 changed files with 349 additions and 228 deletions

View File

@@ -9,7 +9,7 @@ import 'error_report_screen.i18n.dart';
class ErrorReportScreen extends StatelessWidget {
final FlutterErrorDetails details;
const ErrorReportScreen(this.details, {Key? key}) : super(key: key);
const ErrorReportScreen(this.details, {super.key});
@override
Widget build(BuildContext context) {
@@ -21,8 +21,8 @@ class ErrorReportScreen extends StatelessWidget {
child: Column(
children: [
const Align(
child: BackButton(),
alignment: Alignment.topLeft,
child: BackButton(),
),
const Spacer(),
const Icon(
@@ -57,7 +57,9 @@ class ErrorReportScreen extends StatelessWidget {
height: 110.0,
width: double.infinity,
padding: const EdgeInsets.all(12.0),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12.0), color: Colors.black.withOpacity(.2)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.0),
color: Colors.black.withOpacity(.2)),
child: SingleChildScrollView(
physics: const BouncingScrollPhysics(),
child: Text(
@@ -69,7 +71,9 @@ class ErrorReportScreen extends StatelessWidget {
IconButton(
icon: const Icon(FeatherIcons.info),
onPressed: () {
showDialog(context: context, builder: (context) => StacktracePopup(details));
showDialog(
context: context,
builder: (context) => StacktracePopup(details));
},
)
],
@@ -79,10 +83,12 @@ class ErrorReportScreen extends StatelessWidget {
width: double.infinity,
child: TextButton(
style: ButtonStyle(
padding: MaterialStateProperty.all(const EdgeInsets.symmetric(vertical: 14.0)),
padding: MaterialStateProperty.all(
const EdgeInsets.symmetric(vertical: 14.0)),
backgroundColor: MaterialStateProperty.all(Colors.white),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0)),
),
),
child: Text(
@@ -106,7 +112,7 @@ class ErrorReportScreen extends StatelessWidget {
Future reportProblem(BuildContext context) async {
final report = ErrorReport(
os: Platform.operatingSystem + " " + Platform.operatingSystemVersion,
os: "${Platform.operatingSystem} ${Platform.operatingSystemVersion}",
error: details.exceptionAsString(),
version: const String.fromEnvironment("APPVER", defaultValue: "?"),
stack: details.stack.toString(),
@@ -119,7 +125,7 @@ class ErrorReportScreen extends StatelessWidget {
class StacktracePopup extends StatelessWidget {
final FlutterErrorDetails details;
const StacktracePopup(this.details, {Key? key}) : super(key: key);
const StacktracePopup(this.details, {super.key});
@override
Widget build(BuildContext context) {
@@ -150,13 +156,20 @@ class StacktracePopup extends StatelessWidget {
"error".i18n,
details.exceptionAsString(),
),
ErrorDetail("os".i18n, Platform.operatingSystem + " " + Platform.operatingSystemVersion),
ErrorDetail("version".i18n, const String.fromEnvironment("APPVER", defaultValue: "?")),
ErrorDetail("stack".i18n, stack.substring(0, min(stack.length, 5000)))
ErrorDetail("os".i18n,
"${Platform.operatingSystem} ${Platform.operatingSystemVersion}"),
ErrorDetail(
"version".i18n,
const String.fromEnvironment("APPVER",
defaultValue: "?")),
ErrorDetail(
"stack".i18n, stack.substring(0, min(stack.length, 5000)))
]),
),
TextButton(
child: Text("done".i18n, style: TextStyle(color: Theme.of(context).colorScheme.secondary)),
child: Text("done".i18n,
style: TextStyle(
color: Theme.of(context).colorScheme.secondary)),
onPressed: () {
Navigator.of(context).pop();
})
@@ -172,7 +185,7 @@ class ErrorDetail extends StatelessWidget {
final String title;
final String content;
const ErrorDetail(this.title, this.content, {Key? key}) : super(key: key);
const ErrorDetail(this.title, this.content, {super.key});
@override
Widget build(BuildContext context) {
@@ -186,13 +199,17 @@ class ErrorDetail extends StatelessWidget {
style: const TextStyle(fontWeight: FontWeight.bold),
),
Container(
padding:
const EdgeInsets.symmetric(horizontal: 6.5, vertical: 4.0),
margin: const EdgeInsets.only(top: 4.0),
decoration: BoxDecoration(
color: Colors.black26,
borderRadius: BorderRadius.circular(4.0)),
child: Text(
content,
style: const TextStyle(fontFamily: 'SpaceMono', color: Colors.white),
),
padding: const EdgeInsets.symmetric(horizontal: 6.5, vertical: 4.0),
margin: const EdgeInsets.only(top: 4.0),
decoration: BoxDecoration(color: Colors.black26, borderRadius: BorderRadius.circular(4.0)))
style: const TextStyle(
fontFamily: 'SpaceMono', color: Colors.white),
))
],
),
);

View File

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
class ErrorScreen extends StatelessWidget {
const ErrorScreen(this.details, {Key? key}) : super(key: key);
const ErrorScreen(this.details, {super.key});
final FlutterErrorDetails details;
@@ -23,7 +23,8 @@ class ErrorScreen extends StatelessWidget {
children: [
Padding(
padding: const EdgeInsets.all(12.0),
child: Icon(FeatherIcons.alertTriangle, size: 48.0, color: AppColors.of(context).red),
child: Icon(FeatherIcons.alertTriangle,
size: 48.0, color: AppColors.of(context).red),
),
const Padding(
padding: EdgeInsets.all(12.0),
@@ -47,7 +48,7 @@ class ErrorScreen extends StatelessWidget {
physics: const BouncingScrollPhysics(),
scrollDirection: Axis.horizontal,
child: SelectableText(
(details.exceptionAsString() + '\n'),
('${details.exceptionAsString()}\n'),
style: const TextStyle(fontFamily: "monospace"),
),
),

View File

@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
class LoginButton extends StatelessWidget {
const LoginButton({Key? key, required this.onPressed, required this.child}) : super(key: key);
const LoginButton({super.key, required this.onPressed, required this.child});
final void Function()? onPressed;
final Widget? child;
@@ -9,12 +9,6 @@ class LoginButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialButton(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 15.0,
),
child: child,
),
elevation: 0,
focusElevation: 0,
hoverElevation: 0,
@@ -24,6 +18,12 @@ class LoginButton extends StatelessWidget {
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
color: Colors.white,
textColor: Colors.black,
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 15.0,
),
child: child,
),
);
}
}

View File

@@ -5,12 +5,11 @@ enum LoginInputStyle { username, password, school }
class LoginInput extends StatefulWidget {
const LoginInput(
{Key? key,
{super.key,
required this.style,
this.controller,
this.focusNode,
this.onClear})
: super(key: key);
this.onClear});
final Function()? onClear;
final LoginInputStyle style;

View File

@@ -14,15 +14,15 @@ import 'package:flutter/services.dart';
import 'login_screen.i18n.dart';
class LoginScreen extends StatefulWidget {
const LoginScreen({Key? key, this.back = false}) : super(key: key);
const LoginScreen({super.key, this.back = false});
final bool back;
@override
_LoginScreenState createState() => _LoginScreenState();
LoginScreenState createState() => LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
class LoginScreenState extends State<LoginScreen> {
final usernameController = TextEditingController();
final passwordController = TextEditingController();
final schoolController = SchoolInputController();
@@ -109,15 +109,19 @@ class _LoginScreenState extends State<LoginScreen> {
child: ClipRect(
child: Container(
// Png shadow *hack*
width: MediaQuery.of(context).size.width / 4,
margin: const EdgeInsets.only(
left: 12.0, right: 12.0, bottom: 12.0),
// Png shadow *hack*
child: Stack(
children: [
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Opacity(
opacity: 0.3,
child: Image.asset(
"assets/icons/ic_splash.png",
color: Colors.black),
opacity: 0.3),
color: Colors.black)),
),
BackdropFilter(
filter:
@@ -126,9 +130,6 @@ class _LoginScreenState extends State<LoginScreen> {
)
],
),
width: MediaQuery.of(context).size.width / 4,
margin: const EdgeInsets.only(
left: 12.0, right: 12.0, bottom: 12.0),
),
),
),
@@ -246,6 +247,14 @@ class _LoginScreenState extends State<LoginScreen> {
Padding(
padding: const EdgeInsets.only(top: 42.0),
child: Visibility(
visible: _loginState != LoginState.inProgress,
replacement: const Padding(
padding: EdgeInsets.symmetric(vertical: 6.0),
child: CircularProgressIndicator(
valueColor:
AlwaysStoppedAnimation<Color>(Colors.white),
),
),
child: LoginButton(
child: Text("login".i18n,
maxLines: 1,
@@ -255,14 +264,6 @@ class _LoginScreenState extends State<LoginScreen> {
)),
onPressed: () => _loginAPI(context: context),
),
visible: _loginState != LoginState.inProgress,
replacement: const Padding(
padding: EdgeInsets.symmetric(vertical: 6.0),
child: CircularProgressIndicator(
valueColor:
AlwaysStoppedAnimation<Color>(Colors.white),
),
),
),
),
if (_loginState == LoginState.missingFields ||
@@ -306,6 +307,7 @@ class _LoginScreenState extends State<LoginScreen> {
return setState(() => _loginState = LoginState.missingFields);
}
// ignore: no_leading_underscores_for_local_identifiers
void _callAPI() {
loginAPI(
username: username,

View File

@@ -6,16 +6,17 @@ import 'package:flutter/material.dart';
import 'package:filcnaplo_kreta_api/models/school.dart';
class SchoolInput extends StatefulWidget {
const SchoolInput({Key? key, required this.controller, required this.scroll}) : super(key: key);
const SchoolInput(
{super.key, required this.controller, required this.scroll});
final SchoolInputController controller;
final ScrollController scroll;
@override
_SchoolInputState createState() => _SchoolInputState();
SchoolInputState createState() => SchoolInputState();
}
class _SchoolInputState extends State<SchoolInput> {
class SchoolInputState extends State<SchoolInput> {
final _focusNode = FocusNode();
final _layerLink = LayerLink();
late SchoolInputOverlay overlay;
@@ -33,10 +34,13 @@ class _SchoolInputState extends State<SchoolInput> {
// Show school list when focused
_focusNode.addListener(() {
if (_focusNode.hasFocus) {
WidgetsBinding.instance.addPostFrameCallback((_) => overlay.createOverlayEntry(context));
WidgetsBinding.instance
.addPostFrameCallback((_) => overlay.createOverlayEntry(context));
Future.delayed(const Duration(milliseconds: 100)).then((value) {
if (mounted && widget.scroll.hasClients) {
widget.scroll.animateTo(widget.scroll.offset + 500, duration: const Duration(milliseconds: 500), curve: Curves.ease);
widget.scroll.animateTo(widget.scroll.offset + 500,
duration: const Duration(milliseconds: 500),
curve: Curves.ease);
}
});
} else {
@@ -52,7 +56,8 @@ class _SchoolInputState extends State<SchoolInput> {
return;
}
List<School> results = searchSchools(widget.controller.schools ?? [], text);
List<School> results =
searchSchools(widget.controller.schools ?? [], text);
setState(() {
overlay.children = results
.map((School e) => SchoolInputTile(

View File

@@ -17,20 +17,20 @@ class SchoolInputOverlay {
RenderBox renderBox = context.findRenderObject()! as RenderBox;
var size = renderBox.size;
return SchoolInputOverlayWidget(
children: children,
size: size,
layerLink: layerLink,
children: children,
);
}
}
class SchoolInputOverlayWidget extends StatelessWidget {
const SchoolInputOverlayWidget({
Key? key,
super.key,
required this.children,
required this.size,
required this.layerLink,
}) : super(key: key);
});
final Size size;
final List<Widget>? children;
@@ -48,7 +48,8 @@ class SchoolInputOverlayWidget extends StatelessWidget {
offset: Offset(0.0, size.height + 5.0),
child: Material(
color: Theme.of(context).colorScheme.background,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8.0)),
elevation: 4.0,
shadowColor: Colors.black,
child: (children?.length ?? 0) > 0

View File

@@ -2,8 +2,7 @@ import 'package:filcnaplo_kreta_api/models/school.dart';
import 'package:flutter/material.dart';
class SchoolInputTile extends StatelessWidget {
const SchoolInputTile({Key? key, required this.school, this.onTap})
: super(key: key);
const SchoolInputTile({super.key, required this.school, this.onTap});
final School school;
final Function()? onTap;

View File

@@ -2,7 +2,11 @@ import 'package:filcnaplo_mobile_ui/screens/navigation/navbar_item.dart';
import 'package:flutter/material.dart';
class Navbar extends StatelessWidget {
const Navbar({Key? key, required this.selectedIndex, required this.onSelected, required this.items}) : super(key: key);
const Navbar(
{super.key,
required this.selectedIndex,
required this.onSelected,
required this.items});
final int selectedIndex;
final void Function(int index) onSelected;

View File

@@ -11,11 +11,11 @@ class NavItem {
class NavbarItem extends StatelessWidget {
const NavbarItem({
Key? key,
super.key,
required this.item,
required this.active,
required this.onTap,
}) : super(key: key);
});
final NavItem item;
final bool active;

View File

@@ -29,7 +29,7 @@ import 'package:filcnaplo_premium/providers/goal_provider.dart';
import 'package:filcnaplo/api/providers/ad_provider.dart';
class NavigationScreen extends StatefulWidget {
const NavigationScreen({Key? key}) : super(key: key);
const NavigationScreen({super.key});
static NavigationScreenState? of(BuildContext context) =>
context.findAncestorStateOfType<NavigationScreenState>();
@@ -234,6 +234,7 @@ class NavigationScreenState extends State<NavigationScreen>
_navigatorState.currentState?.pushReplacementNamed(page);
});
// ignore: deprecated_member_use
return WillPopScope(
onWillPop: () async {
if (_navigatorState.currentState?.canPop() ?? false) {

View File

@@ -6,13 +6,13 @@ import 'package:filcnaplo/api/providers/status_provider.dart';
import 'status_bar.i18n.dart';
class StatusBar extends StatefulWidget {
const StatusBar({Key? key}) : super(key: key);
const StatusBar({super.key});
@override
_StatusBarState createState() => _StatusBarState();
StatusBarState createState() => StatusBarState();
}
class _StatusBarState extends State<StatusBar> {
class StatusBarState extends State<StatusBar> {
late StatusProvider statusProvider;
@override

View File

@@ -12,7 +12,7 @@ import 'package:provider/provider.dart';
import 'package:filcnaplo/api/providers/news_provider.dart';
class NewsScreen extends StatelessWidget {
const NewsScreen({Key? key}) : super(key: key);
const NewsScreen({super.key});
@override
Widget build(BuildContext context) {

View File

@@ -3,7 +3,7 @@ import 'package:filcnaplo/models/news.dart';
import 'package:filcnaplo/utils/format.dart';
class NewsTile extends StatelessWidget {
const NewsTile(this.news, {Key? key, this.onTap}) : super(key: key);
const NewsTile(this.news, {super.key, this.onTap});
final News news;
final Function()? onTap;

View File

@@ -11,7 +11,7 @@ import 'package:provider/provider.dart';
import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart';
class NewsView extends StatelessWidget {
const NewsView(this.news, {Key? key}) : super(key: key);
const NewsView(this.news, {super.key});
final News news;

View File

@@ -3,7 +3,13 @@ import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
class AccountTile extends StatelessWidget {
const AccountTile({Key? key, this.onTap, this.onTapMenu, this.profileImage, this.name, this.username}) : super(key: key);
const AccountTile(
{super.key,
this.onTap,
this.onTapMenu,
this.profileImage,
this.name,
this.username});
final void Function()? onTap;
final void Function()? onTapMenu;
@@ -30,7 +36,8 @@ class AccountTile extends StatelessWidget {
child: IconButton(
splashRadius: 24.0,
onPressed: onTapMenu,
icon: Icon(FeatherIcons.moreVertical, color: AppColors.of(context).text.withOpacity(0.8)),
icon: Icon(FeatherIcons.moreVertical,
color: AppColors.of(context).text.withOpacity(0.8)),
),
)
: null,

View File

@@ -1,3 +1,5 @@
// ignore_for_file: no_leading_underscores_for_local_identifiers
import 'package:filcnaplo/models/user.dart';
import 'package:filcnaplo_mobile_ui/common/bottom_card.dart';
import 'package:filcnaplo_mobile_ui/common/detail.dart';
@@ -8,7 +10,7 @@ import 'package:intl/intl.dart';
import 'account_view.i18n.dart';
class AccountView extends StatelessWidget {
const AccountView(this.user, {Key? key}) : super(key: key);
const AccountView(this.user, {super.key});
final User user;

View File

@@ -1,3 +1,5 @@
// ignore_for_file: no_leading_underscores_for_local_identifiers, use_build_context_synchronously
import 'package:filcnaplo/api/providers/update_provider.dart';
import 'package:filcnaplo_kreta_api/providers/absence_provider.dart';
import 'package:filcnaplo_kreta_api/providers/event_provider.dart';
@@ -46,13 +48,13 @@ import 'package:filcnaplo_premium/ui/mobile/settings/modify_teacher_names.dart';
import 'package:filcnaplo_premium/ui/mobile/settings/welcome_message.dart';
class SettingsScreen extends StatefulWidget {
const SettingsScreen({Key? key}) : super(key: key);
const SettingsScreen({super.key});
@override
_SettingsScreenState createState() => _SettingsScreenState();
SettingsScreenState createState() => SettingsScreenState();
}
class _SettingsScreenState extends State<SettingsScreen>
class SettingsScreenState extends State<SettingsScreen>
with SingleTickerProviderStateMixin {
int devmodeCountdown = 5;
bool __ss = false; // secret settings