null safety++

This commit is contained in:
Vishesh Handa
2021-06-02 09:40:53 +02:00
parent b76fe9e27a
commit 9acf3d15f6
8 changed files with 26 additions and 37 deletions

@ -1,7 +1,5 @@
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
import 'package:gitjournal/app_settings.dart';
import 'package:gitjournal/core/md_yaml_doc_codec.dart';
import 'package:gitjournal/repository.dart';

@ -76,9 +76,6 @@ class Graph extends ChangeNotifier {
var node = _getNode(note);
var links = await node.note.fetchLinks();
if (links == null) {
return;
}
var linkResolver = LinkResolver(note);
for (var l in links) {
var noteB = linkResolver.resolveLink(l);

@ -603,13 +603,13 @@ class Note with NotesNotifier {
return date.toString();
}
Future<List<Link>?> fetchLinks() async {
Future<List<Link>> fetchLinks() async {
if (_links != null) {
return _links;
return _links!;
}
_links = await _linksLoader.parseLinks(body: _body, filePath: _filePath!);
return _links;
return _links!;
}
List<Link>? links() {

@ -1,5 +1,3 @@
// @dart=2.9
/*
Copyright 2020-2021 Vishesh Handa <me@vhanda.in>
Roland Fredenhagen <important@van-fredenhagen.de>
@ -40,9 +38,9 @@ class MarkdownRenderer extends StatelessWidget {
final Func1<Note, void> onNoteTapped;
const MarkdownRenderer({
Key key,
@required this.note,
@required this.onNoteTapped,
Key? key,
required this.note,
required this.onNoteTapped,
}) : super(key: key);
@override
@ -58,10 +56,10 @@ class MarkdownRenderer extends StatelessWidget {
// Copied from MarkdownStyleSheet except Grey is replaced with Highlight color
var markdownStyleSheet = MarkdownStyleSheet.fromTheme(theme).copyWith(
code: theme.textTheme.bodyText2.copyWith(
code: theme.textTheme.bodyText2!.copyWith(
backgroundColor: theme.dialogBackgroundColor,
fontFamily: 'monospace',
fontSize: theme.textTheme.bodyText2.fontSize * 0.85,
fontSize: theme.textTheme.bodyText2!.fontSize! * 0.85,
),
tableBorder: TableBorder.all(color: theme.highlightColor, width: 0),
tableCellsDecoration: BoxDecoration(color: theme.dialogBackgroundColor),
@ -78,7 +76,7 @@ class MarkdownRenderer extends StatelessWidget {
color: theme.primaryColorLight,
borderRadius: BorderRadius.circular(2.0),
),
checkbox: theme.textTheme.bodyText2.copyWith(
checkbox: theme.textTheme.bodyText2!.copyWith(
color: isDark ? theme.primaryColorLight : theme.primaryColor,
),
);
@ -87,10 +85,10 @@ class MarkdownRenderer extends StatelessWidget {
data: note.body,
// selectable: false, -> making this true breaks link navigation
styleSheet: markdownStyleSheet,
onTapLink: (String _, String link, String __) async {
onTapLink: (String _, String? link, String __) async {
final linkResolver = LinkResolver(note);
var linkedNote = linkResolver.resolve(link);
var linkedNote = linkResolver.resolve(link!);
if (linkedNote != null) {
onNoteTapped(linkedNote);
return;

@ -1,4 +1,4 @@
// @dart=2.9
import 'package:flutter/material.dart';
@ -12,7 +12,7 @@ import 'package:gitjournal/folder_views/standard_view.dart';
import 'package:gitjournal/settings.dart';
import 'package:gitjournal/themes.dart';
class NoteSearchDelegate extends SearchDelegate<Note> {
class NoteSearchDelegate extends SearchDelegate<Note?> {
final List<Note> notes;
final FolderViewType viewType;

@ -1,6 +1,3 @@
// @dart=2.9
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:collection/collection.dart';
@ -21,9 +18,9 @@ class NoteBacklinkRenderer extends StatefulWidget {
final NotesFolder parentFolder;
NoteBacklinkRenderer({
@required this.note,
@required this.rootFolder,
@required this.parentFolder,
required this.note,
required this.rootFolder,
required this.parentFolder,
});
@override
@ -120,18 +117,16 @@ class _NoteBacklinkRendererState extends State<NoteBacklinkRenderer> {
class NoteSnippet extends StatelessWidget {
final Note note;
final Note parentNote;
final Function onTap;
final void Function() onTap;
NoteSnippet({
@required this.note,
@required this.parentNote,
@required this.onTap,
required this.note,
required this.parentNote,
required this.onTap,
});
@override
Widget build(BuildContext context) {
assert(note != null);
var theme = Theme.of(context);
var textTheme = theme.textTheme;
var title = note.title;
@ -193,7 +188,9 @@ class NoteSnippet extends StatelessWidget {
// vHanda: This isn't a very fool proof way of figuring out the line
// FIXME: Ideally, we should be parsing the entire markdown properly and rendering all of it
return RichText(
text: TextSpan(children: _extraMetaLinks(textTheme.bodyText2, paragraph)),
text: TextSpan(
children: _extraMetaLinks(textTheme.bodyText2!, paragraph),
),
maxLines: 3,
);
}
@ -212,7 +209,7 @@ List<TextSpan> _extraMetaLinks(TextStyle textStyle, String line) {
var text = line.substring(0, match.start);
spans.add(TextSpan(style: textStyle, text: text));
text = match.group(0);
text = match.group(0)!;
spans.add(TextSpan(
style: textStyle.copyWith(fontWeight: FontWeight.bold), text: text));

@ -139,7 +139,7 @@ bar: Foo
await note.load();
var linksOrNull = await note.fetchLinks();
var links = linksOrNull!;
var links = linksOrNull;
expect(links[0].filePath, p.join(tempDir.path, "foo.md"));
expect(links[0].publicTerm, "Hi");
@ -160,7 +160,7 @@ bar: Foo
await note.load();
var linksOrNull = await note.fetchLinks();
var links = linksOrNull!;
var links = linksOrNull;
expect(links[0].isWikiLink, true);
expect(links[0].wikiTerm, "GitJournal");

@ -1,7 +1,6 @@
import 'dart:io';
import 'package:dart_git/git.dart';
import 'package:meta/meta.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';