Fix some flutter analyze warnings (#268)

* Remove unneccesary Container instances

* Add types to uninitialized variables

* Use the parameter initializing shorthand instead of doing it in the constructor
This commit is contained in:
Caleb Jasik 2025-03-05 08:00:44 -06:00 committed by GitHub
parent 2b844d27dd
commit fd991b9a02
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 97 additions and 113 deletions

View file

@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:mobile_nebula/components/SpecialTextField.dart';
import 'package:mobile_nebula/models/CIDR.dart';
import '../services/utils.dart';
import 'IPField.dart';
@ -52,57 +53,55 @@ class _CIDRFieldState extends State<CIDRField> {
Widget build(BuildContext context) {
var textStyle = CupertinoTheme.of(context).textTheme.textStyle;
return Container(
child: Row(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.fromLTRB(6, 6, 2, 6),
child: IPField(
help: widget.ipHelp,
ipOnly: true,
textPadding: EdgeInsets.all(0),
textInputAction: TextInputAction.next,
textAlign: TextAlign.end,
focusNode: widget.focusNode,
nextFocusNode: bitsFocus,
onChanged: (val) {
if (widget.onChanged == null) {
return;
}
cidr.ip = val;
widget.onChanged!(cidr);
},
controller: widget.ipController,
),
),
),
Text("/"),
Container(
width: Utils.textSize("bits", textStyle).width + 12,
padding: EdgeInsets.fromLTRB(2, 6, 6, 6),
child: SpecialTextField(
keyboardType: TextInputType.number,
focusNode: bitsFocus,
nextFocusNode: widget.nextFocusNode,
controller: widget.bitsController,
return Row(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.fromLTRB(6, 6, 2, 6),
child: IPField(
help: widget.ipHelp,
ipOnly: true,
textPadding: EdgeInsets.all(0),
textInputAction: TextInputAction.next,
textAlign: TextAlign.end,
focusNode: widget.focusNode,
nextFocusNode: bitsFocus,
onChanged: (val) {
if (widget.onChanged == null) {
return;
}
cidr.bits = int.tryParse(val) ?? 0;
cidr.ip = val;
widget.onChanged!(cidr);
},
maxLength: 2,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
textInputAction: widget.textInputAction ?? TextInputAction.done,
placeholder: 'bits',
controller: widget.ipController,
),
),
],
),
),
Text("/"),
Container(
width: Utils.textSize("bits", textStyle).width + 12,
padding: EdgeInsets.fromLTRB(2, 6, 6, 6),
child: SpecialTextField(
keyboardType: TextInputType.number,
focusNode: bitsFocus,
nextFocusNode: widget.nextFocusNode,
controller: widget.bitsController,
onChanged: (val) {
if (widget.onChanged == null) {
return;
}
cidr.bits = int.tryParse(val) ?? 0;
widget.onChanged!(cidr);
},
maxLength: 2,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
textInputAction: widget.textInputAction ?? TextInputAction.done,
placeholder: 'bits',
),
),
],
);
}

View file

@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:mobile_nebula/components/SpecialTextField.dart';
import 'package:mobile_nebula/models/IPAndPort.dart';
import '../services/utils.dart';
import 'IPField.dart';
@ -58,49 +59,47 @@ class _IPAndPortFieldState extends State<IPAndPortField> {
Widget build(BuildContext context) {
var textStyle = CupertinoTheme.of(context).textTheme.textStyle;
return Container(
child: Row(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.fromLTRB(6, 6, 2, 6),
child: IPField(
help: widget.ipHelp,
ipOnly: widget.ipOnly,
nextFocusNode: _portFocus,
textPadding: EdgeInsets.all(0),
textInputAction: TextInputAction.next,
focusNode: widget.focusNode,
onChanged: (val) {
_ipAndPort.ip = val;
widget.onChanged(_ipAndPort);
},
textAlign: widget.ipTextAlign,
controller: widget.ipController,
),
),
),
Text(":"),
Container(
width: Utils.textSize("00000", textStyle).width + 12,
padding: EdgeInsets.fromLTRB(2, 6, 6, 6),
child: SpecialTextField(
keyboardType: TextInputType.number,
focusNode: _portFocus,
nextFocusNode: widget.nextFocusNode,
controller: widget.portController,
return Row(
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.fromLTRB(6, 6, 2, 6),
child: IPField(
help: widget.ipHelp,
ipOnly: widget.ipOnly,
nextFocusNode: _portFocus,
textPadding: EdgeInsets.all(0),
textInputAction: TextInputAction.next,
focusNode: widget.focusNode,
onChanged: (val) {
_ipAndPort.port = int.tryParse(val);
_ipAndPort.ip = val;
widget.onChanged(_ipAndPort);
},
maxLength: 5,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
textInputAction: TextInputAction.done,
placeholder: 'port',
textAlign: widget.ipTextAlign,
controller: widget.ipController,
),
),
],
),
),
Text(":"),
Container(
width: Utils.textSize("00000", textStyle).width + 12,
padding: EdgeInsets.fromLTRB(2, 6, 6, 6),
child: SpecialTextField(
keyboardType: TextInputType.number,
focusNode: _portFocus,
nextFocusNode: widget.nextFocusNode,
controller: widget.portController,
onChanged: (val) {
_ipAndPort.port = int.tryParse(val);
widget.onChanged(_ipAndPort);
},
maxLength: 5,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
textInputAction: TextInputAction.done,
placeholder: 'port',
),
),
],
);
}

View file

@ -9,7 +9,7 @@ class SiteItem extends StatelessWidget {
const SiteItem({super.key, required this.site, this.onPressed});
final Site site;
final onPressed;
final void Function()? onPressed;
@override
Widget build(BuildContext context) {

View file

@ -8,7 +8,7 @@ class ConfigButtonItem extends StatelessWidget {
const ConfigButtonItem({super.key, this.content, this.onPressed});
final Widget? content;
final onPressed;
final void Function()? onPressed;
@override
Widget build(BuildContext context) {

View file

@ -2,7 +2,6 @@ import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:mobile_nebula/components/SpecialButton.dart';
import 'package:mobile_nebula/services/utils.dart';
@ -21,7 +20,7 @@ class ConfigPageItem extends StatelessWidget {
final Widget? content;
final double labelWidth;
final CrossAxisAlignment crossAxisAlignment;
final onPressed;
final void Function()? onPressed;
final bool disabled;
@override

View file

@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
import 'package:mobile_nebula/models/HostInfo.dart';
import 'package:mobile_nebula/models/UnsafeRoute.dart';
import 'package:uuid/uuid.dart';
import 'Certificate.dart';
import 'StaticHosts.dart';
@ -53,45 +54,31 @@ class Site {
late List<String> errors;
Site({
String name = '',
this.name = '',
String? id,
Map<String, StaticHost>? staticHostmap,
List<CertificateInfo>? ca,
CertificateInfo? certInfo,
int lhDuration = 0,
int port = 0,
String cipher = "aes",
int sortKey = 0,
int mtu = 1300,
bool connected = false,
String status = '',
String logFile = '',
String logVerbosity = 'info',
this.certInfo,
this.lhDuration = 0,
this.port = 0,
this.cipher = "aes",
this.sortKey = 0,
this.mtu = 1300,
this.connected = false,
this.status = '',
this.logFile = '',
this.logVerbosity = 'info',
List<String>? errors,
List<UnsafeRoute>? unsafeRoutes,
bool managed = false,
String? rawConfig,
DateTime? lastManagedUpdate,
this.managed = false,
this.rawConfig,
this.lastManagedUpdate,
}) {
this.name = name;
this.id = id ?? uuid.v4();
this.staticHostmap = staticHostmap ?? {};
this.ca = ca ?? [];
this.certInfo = certInfo;
this.lhDuration = lhDuration;
this.port = port;
this.cipher = cipher;
this.sortKey = sortKey;
this.mtu = mtu;
this.connected = connected;
this.status = status;
this.logFile = logFile;
this.logVerbosity = logVerbosity;
this.errors = errors ?? [];
this.unsafeRoutes = unsafeRoutes ?? [];
this.managed = managed;
this.rawConfig = rawConfig;
this.lastManagedUpdate = lastManagedUpdate;
_updates = EventChannel('net.defined.nebula/${this.id}');
_updates.receiveBroadcastStream().listen(

View file

@ -5,7 +5,7 @@ bool dnsValidator(str, {requireTld = true, allowUnderscore = false}) {
return false;
}
List parts = str.split('.');
List<String> parts = str.split('.');
if (requireTld) {
var tld = parts.removeLast();
if (parts.isEmpty || !RegExp(r'^[a-z]{2,}$').hasMatch(tld)) {