Settings Screens: Null safety++

This commit is contained in:
Vishesh Handa
2021-05-27 13:19:20 +02:00
parent 8c326399bd
commit 789a0b1208
5 changed files with 54 additions and 54 deletions

View File

@ -100,7 +100,7 @@ class GitNoteRepository {
}
Future<NoteRepoResult> addFolderConfig(NotesFolderConfig config) async {
var pathSpec = config.folder.pathSpec();
var pathSpec = config.folder!.pathSpec();
pathSpec = pathSpec.isNotEmpty ? pathSpec : '/';
await _add(".");
@ -110,7 +110,8 @@ class GitNoteRepository {
authorName: settings.gitAuthor,
);
return NoteRepoResult(noteFilePath: config.folder.folderPath, error: false);
return NoteRepoResult(
noteFilePath: config.folder!.folderPath, error: false);
}
Future<NoteRepoResult> renameFolder(

View File

@ -26,7 +26,7 @@ class NotesFolderConfig extends Equatable {
final bool showNoteSummary;
final NoteFileNameFormat fileNameFormat;
final NoteFileNameFormat journalFileNameFormat;
final NotesFolderFS folder;
final NotesFolderFS? folder;
final bool yamlHeaderEnabled;
//int _version = 1;
@ -64,7 +64,7 @@ class NotesFolderConfig extends Equatable {
viewHeader,
fileNameFormat,
journalFileNameFormat,
folder,
if (folder != null) folder!,
yamlHeaderEnabled,
yamlModifiedKey,
yamlCreatedKey,
@ -98,7 +98,7 @@ class NotesFolderConfig extends Equatable {
viewHeader: viewHeader,
fileNameFormat: settings.noteFileNameFormat,
journalFileNameFormat: settings.journalNoteFileNameFormat,
folder: folder!,
folder: folder,
yamlHeaderEnabled: settings.yamlHeaderEnabled,
yamlCreatedKey: settings.yamlCreatedKey,
yamlModifiedKey: settings.yamlModifiedKey,
@ -289,7 +289,7 @@ class NotesFolderConfig extends Equatable {
var yaml = toYAML(map);
var file = File(p.join(folder.folderPath, FILENAME));
var file = File(p.join(folder!.folderPath, FILENAME));
await file.writeAsString(yaml);
}
}

View File

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:io';
import 'package:flutter/material.dart';
@ -30,8 +28,8 @@ class GitRemoteSettingsScreen extends StatefulWidget {
}
class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
String remoteHost;
var branches = <String>[];
var remoteHost = "";
var currentBranch = "";
@override
@ -40,8 +38,7 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
var settings = Provider.of<Settings>(context);
var repo = Provider.of<GitJournalRepo>(context);
if (remoteHost == null) {
remoteHost = "";
if (remoteHost.isEmpty) {
repo.remoteConfigs().then((list) {
setState(() {
if (!mounted) return;
@ -51,7 +48,7 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
}
if (branches.isEmpty) {
currentBranch = repo.currentBranch;
currentBranch = repo.currentBranch ?? "";
repo.branches().then((list) {
setState(() {
if (!mounted) return;
@ -62,14 +59,13 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
var body = Column(
children: <Widget>[
if (remoteHost != null && remoteHost.isNotEmpty)
if (remoteHost.isNotEmpty)
Text(
tr('settings.gitRemote.host'),
style: textTheme.bodyText1,
textAlign: TextAlign.left,
),
if (remoteHost != null && remoteHost.isNotEmpty)
ListTile(title: Text(remoteHost)),
if (remoteHost.isNotEmpty) ListTile(title: Text(remoteHost)),
if (branches.isNotEmpty)
ListPreference(
title: tr('settings.gitRemote.branch'),
@ -191,9 +187,9 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
"-" +
DateTime.now().toIso8601String().substring(0, 10); // only the date
generateSSHKeys(comment: comment).then((SshKey sshKey) {
generateSSHKeys(comment: comment).then((SshKey? sshKey) {
var settings = Provider.of<Settings>(context, listen: false);
settings.sshPublicKey = sshKey.publicKey;
settings.sshPublicKey = sshKey!.publicKey;
settings.sshPrivateKey = sshKey.publicKey;
settings.sshPassword = sshKey.password;
settings.save();
@ -250,9 +246,9 @@ class _GitRemoteSettingsScreenState extends State<GitRemoteSettingsScreen> {
class Button extends StatelessWidget {
final String text;
final Function onPressed;
final void Function() onPressed;
Button({@required this.text, @required this.onPressed});
Button({required this.text, required this.onPressed});
@override
Widget build(BuildContext context) {
@ -273,9 +269,9 @@ class Button extends StatelessWidget {
class RedButton extends StatelessWidget {
final String text;
final Function onPressed;
final void Function() onPressed;
RedButton({@required this.text, @required this.onPressed});
RedButton({required this.text, required this.onPressed});
@override
Widget build(BuildContext context) {

View File

@ -1,5 +1,3 @@
// @dart=2.9
/*
Copyright 2020-2021 Vishesh Handa <me@vhanda.in>
@ -44,8 +42,8 @@ class NoteMetadataSettingsScreen extends StatefulWidget {
class _NoteMetadataSettingsScreenState
extends State<NoteMetadataSettingsScreen> {
DateTime created;
DateTime modified;
late DateTime created;
late DateTime modified;
@override
void initState() {
@ -206,7 +204,7 @@ class NoteOutputExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
var theme = Theme.of(context);
var style = theme.textTheme.subtitle1;
var style = theme.textTheme.subtitle1!;
style = style.copyWith(fontFamily: "Roboto Mono");
var settings = Provider.of<Settings>(context);
@ -343,14 +341,14 @@ class CustomMetDataTile extends StatefulWidget {
final String value;
final Func1<String, void> onChange;
CustomMetDataTile({@required this.value, @required this.onChange});
CustomMetDataTile({required this.value, required this.onChange});
@override
_CustomMetDataTileState createState() => _CustomMetDataTileState();
}
class _CustomMetDataTileState extends State<CustomMetDataTile> {
TextEditingController _textController;
TextEditingController? _textController;
@override
void initState() {
@ -386,13 +384,13 @@ class _CustomMetDataTileState extends State<CustomMetDataTile> {
var form = Form(
child: TextFormField(
validator: (value) {
value = value.trim();
value = value!.trim();
if (value.isEmpty) {
return "";
}
var map = MarkdownYAMLCodec.parseYamlText(value);
if (map == null || map.isEmpty) {
if (map.isEmpty) {
return tr("settings.noteMetaData.customMetaData.invalid");
}
return "";
@ -416,9 +414,9 @@ class _CustomMetDataTileState extends State<CustomMetDataTile> {
),
TextButton(
onPressed: () {
var text = _textController.text.trim();
var text = _textController!.text.trim();
var map = MarkdownYAMLCodec.parseYamlText(text);
if (map == null || map.isEmpty) {
if (map.isEmpty) {
return Navigator.of(context).pop();
}

View File

@ -1,5 +1,3 @@
// @dart=2.9
/*
Copyright 2020-2021 Vishesh Handa <me@vhanda.in>
Roland Fredenhagen <important@van-fredenhagen.de>
@ -93,7 +91,8 @@ class SettingsListState extends State<SettingsList> {
final repo = Provider.of<GitJournalRepo>(context);
var repoManager = Provider.of<RepositoryManager>(context);
var saveGitAuthor = (String gitAuthor) {
var saveGitAuthor = (String? gitAuthor) {
if (gitAuthor == null) return;
settings.gitAuthor = gitAuthor;
settings.save();
};
@ -107,8 +106,8 @@ class SettingsListState extends State<SettingsList> {
hintText: tr('settings.author.hint'),
labelText: tr('settings.author.label'),
),
validator: (String value) {
value = value.trim();
validator: (String? value) {
value = value!.trim();
if (value.isEmpty) {
return tr('settings.author.validator');
}
@ -120,13 +119,15 @@ class SettingsListState extends State<SettingsList> {
initialValue: settings.gitAuthor,
),
onChanged: () {
if (!gitAuthorKey.currentState.validate()) return;
var gitAuthor = gitAuthorKey.currentState.value;
if (!gitAuthorKey.currentState!.validate()) return;
var gitAuthor = gitAuthorKey.currentState!.value;
saveGitAuthor(gitAuthor);
},
);
var saveGitAuthorEmail = (String gitAuthorEmail) {
var saveGitAuthorEmail = (String? gitAuthorEmail) {
if (gitAuthorEmail == null) return;
settings.gitAuthorEmail = gitAuthorEmail;
settings.save();
};
@ -140,8 +141,8 @@ class SettingsListState extends State<SettingsList> {
hintText: tr('settings.email.hint'),
labelText: tr('settings.email.label'),
),
validator: (String value) {
value = value.trim();
validator: (String? value) {
value = value!.trim();
if (value.isEmpty) {
return tr('settings.email.validator.empty');
}
@ -157,8 +158,8 @@ class SettingsListState extends State<SettingsList> {
initialValue: settings.gitAuthorEmail,
),
onChanged: () {
if (!gitAuthorEmailKey.currentState.validate()) return;
var gitAuthorEmail = gitAuthorEmailKey.currentState.value;
if (!gitAuthorEmailKey.currentState!.validate()) return;
var gitAuthorEmail = gitAuthorEmailKey.currentState!.value;
saveGitAuthorEmail(gitAuthorEmail);
},
);
@ -390,7 +391,7 @@ class SettingsListState extends State<SettingsList> {
settings.storageLocation = "";
} else {
settings.storageLocation =
await ICloudDocumentsPath.documentsPath;
(await ICloudDocumentsPath.documentsPath)!;
if (settings.storageLocation.isNotEmpty) {
settings.storeInternally = false;
}
@ -592,19 +593,23 @@ Future<String> _getExternalDir() async {
}
var path = await ExtStorage.getExternalStorageDirectory();
if (await _isDirWritable(path)) {
return path;
} else {
Log.e("ExtStorage: Got $path but it is not writable");
if (path != null) {
if (await _isDirWritable(path)) {
return path;
} else {
Log.e("ExtStorage: Got $path but it is not writable");
}
}
var extDir = await getExternalStorageDirectory();
path = extDir.path;
if (extDir != null) {
path = extDir.path;
if (await _isDirWritable(path)) {
return path;
} else {
Log.e("ExternalStorageDirectory: Got $path but it is not writable");
if (await _isDirWritable(path)) {
return path;
} else {
Log.e("ExternalStorageDirectory: Got $path but it is not writable");
}
}
return "";