mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-26 04:24:31 +08:00
null safety++
This commit is contained in:
@ -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';
|
||||
|
Reference in New Issue
Block a user