David PHAM-VAN

Improve internal null-safety

1 # Changelog 1 # Changelog
2 2
  3 +## 3.0.1
  4 +
  5 +- Improve internal null-safety
  6 +
3 ## 3.0.0 7 ## 3.0.0
4 8
5 - Fix Checkbox Widget 9 - Fix Checkbox Widget
@@ -123,7 +123,7 @@ abstract class PdfAnnotBase { @@ -123,7 +123,7 @@ abstract class PdfAnnotBase {
123 /// Color 123 /// Color
124 final PdfColor? color; 124 final PdfColor? color;
125 125
126 - final Map<String?, PdfDataType> _appearances = <String?, PdfDataType>{}; 126 + final Map<String, PdfDataType> _appearances = <String, PdfDataType>{};
127 127
128 PdfName? _as; 128 PdfName? _as;
129 129
@@ -231,7 +231,7 @@ abstract class PdfAnnotBase { @@ -231,7 +231,7 @@ abstract class PdfAnnotBase {
231 if (_appearances.isNotEmpty) { 231 if (_appearances.isNotEmpty) {
232 params['/AP'] = PdfDict(_appearances); 232 params['/AP'] = PdfDict(_appearances);
233 if (_as != null) { 233 if (_as != null) {
234 - params['/AS'] = _as; 234 + params['/AS'] = _as!;
235 } 235 }
236 } 236 }
237 } 237 }
@@ -158,7 +158,7 @@ class PdfString extends PdfDataType { @@ -158,7 +158,7 @@ class PdfString extends PdfDataType {
158 return PdfString(_date(date)); 158 return PdfString(_date(date));
159 } 159 }
160 160
161 - final Uint8List? value; 161 + final Uint8List value;
162 162
163 final PdfStringFormat format; 163 final PdfStringFormat format;
164 164
@@ -269,11 +269,11 @@ class PdfString extends PdfDataType { @@ -269,11 +269,11 @@ class PdfString extends PdfDataType {
269 int _codeUnitForDigit(int digit) => 269 int _codeUnitForDigit(int digit) =>
270 digit < 10 ? digit + 0x30 : digit + 0x61 - 10; 270 digit < 10 ? digit + 0x30 : digit + 0x61 - 10;
271 271
272 - void _output(PdfStream s, Uint8List? value) { 272 + void _output(PdfStream s, Uint8List value) {
273 switch (format) { 273 switch (format) {
274 case PdfStringFormat.binary: 274 case PdfStringFormat.binary:
275 s.putByte(0x3c); 275 s.putByte(0x3c);
276 - for (var byte in value!) { 276 + for (var byte in value) {
277 s.putByte(_codeUnitForDigit((byte & 0xF0) >> 4)); 277 s.putByte(_codeUnitForDigit((byte & 0xF0) >> 4));
278 s.putByte(_codeUnitForDigit(byte & 0x0F)); 278 s.putByte(_codeUnitForDigit(byte & 0x0F));
279 } 279 }
@@ -281,7 +281,7 @@ class PdfString extends PdfDataType { @@ -281,7 +281,7 @@ class PdfString extends PdfDataType {
281 break; 281 break;
282 case PdfStringFormat.litteral: 282 case PdfStringFormat.litteral:
283 s.putByte(40); 283 s.putByte(40);
284 - _putTextBytes(s, value!); 284 + _putTextBytes(s, value);
285 s.putByte(41); 285 s.putByte(41);
286 break; 286 break;
287 } 287 }
@@ -350,7 +350,7 @@ class PdfSecString extends PdfString { @@ -350,7 +350,7 @@ class PdfSecString extends PdfString {
350 return super.output(s); 350 return super.output(s);
351 } 351 }
352 352
353 - final enc = object.pdfDocument.encryption!.encrypt(value!, object); 353 + final enc = object.pdfDocument.encryption!.encrypt(value, object);
354 _output(s, enc); 354 _output(s, enc);
355 } 355 }
356 } 356 }
@@ -457,9 +457,9 @@ class PdfArray extends PdfDataType { @@ -457,9 +457,9 @@ class PdfArray extends PdfDataType {
457 return PdfArray(list.map<PdfNum>((num? e) => PdfNum(e!)).toList()); 457 return PdfArray(list.map<PdfNum>((num? e) => PdfNum(e!)).toList());
458 } 458 }
459 459
460 - final List<PdfDataType?> values = <PdfDataType?>[]; 460 + final List<PdfDataType> values = <PdfDataType>[];
461 461
462 - void add(PdfDataType? v) { 462 + void add(PdfDataType v) {
463 values.add(v); 463 values.add(v);
464 } 464 }
465 465
@@ -468,7 +468,7 @@ class PdfArray extends PdfDataType { @@ -468,7 +468,7 @@ class PdfArray extends PdfDataType {
468 s.putString('['); 468 s.putString('[');
469 if (values.isNotEmpty) { 469 if (values.isNotEmpty) {
470 for (var n = 0; n < values.length; n++) { 470 for (var n = 0; n < values.length; n++) {
471 - final val = values[n]!; 471 + final val = values[n];
472 if (n > 0 && 472 if (n > 0 &&
473 !(val is PdfName || 473 !(val is PdfName ||
474 val is PdfString || 474 val is PdfString ||
@@ -489,7 +489,7 @@ class PdfArray extends PdfDataType { @@ -489,7 +489,7 @@ class PdfArray extends PdfDataType {
489 } 489 }
490 490
491 // ignore: prefer_collection_literals 491 // ignore: prefer_collection_literals
492 - final uniques = LinkedHashMap<PdfDataType?, bool>(); 492 + final uniques = LinkedHashMap<PdfDataType, bool>();
493 for (final s in values) { 493 for (final s in values) {
494 uniques[s] = true; 494 uniques[s] = true;
495 } 495 }
@@ -511,7 +511,7 @@ class PdfArray extends PdfDataType { @@ -511,7 +511,7 @@ class PdfArray extends PdfDataType {
511 } 511 }
512 512
513 class PdfDict extends PdfDataType { 513 class PdfDict extends PdfDataType {
514 - PdfDict([Map<String?, PdfDataType>? values]) { 514 + PdfDict([Map<String, PdfDataType>? values]) {
515 if (values != null) { 515 if (values != null) {
516 this.values.addAll(values); 516 this.values.addAll(values);
517 } 517 }
@@ -526,27 +526,27 @@ class PdfDict extends PdfDataType { @@ -526,27 +526,27 @@ class PdfDict extends PdfDataType {
526 ); 526 );
527 } 527 }
528 528
529 - final Map<String?, PdfDataType?> values = <String?, PdfDataType?>{}; 529 + final Map<String, PdfDataType> values = <String, PdfDataType>{};
530 530
531 bool get isNotEmpty => values.isNotEmpty; 531 bool get isNotEmpty => values.isNotEmpty;
532 532
533 - operator []=(String k, PdfDataType? v) { 533 + operator []=(String k, PdfDataType v) {
534 values[k] = v; 534 values[k] = v;
535 } 535 }
536 536
537 - PdfDataType? operator [](String? k) { 537 + PdfDataType? operator [](String k) {
538 return values[k]; 538 return values[k];
539 } 539 }
540 540
541 @override 541 @override
542 void output(PdfStream s) { 542 void output(PdfStream s) {
543 s.putBytes(const <int>[0x3c, 0x3c]); 543 s.putBytes(const <int>[0x3c, 0x3c]);
544 - values.forEach((String? k, PdfDataType? v) { 544 + values.forEach((String k, PdfDataType v) {
545 s.putString(k); 545 s.putString(k);
546 if (v is PdfNum || v is PdfBool || v is PdfNull || v is PdfIndirect) { 546 if (v is PdfNum || v is PdfBool || v is PdfNull || v is PdfIndirect) {
547 s.putByte(0x20); 547 s.putByte(0x20);
548 } 548 }
549 - v!.output(s); 549 + v.output(s);
550 }); 550 });
551 s.putBytes(const <int>[0x3e, 0x3e]); 551 s.putBytes(const <int>[0x3e, 0x3e]);
552 } 552 }
@@ -557,7 +557,7 @@ class PdfDict extends PdfDataType { @@ -557,7 +557,7 @@ class PdfDict extends PdfDataType {
557 557
558 void merge(PdfDict other) { 558 void merge(PdfDict other) {
559 for (final key in other.values.keys) { 559 for (final key in other.values.keys) {
560 - final value = other[key]; 560 + final value = other[key]!;
561 final current = values[key]; 561 final current = values[key];
562 if (current == null) { 562 if (current == null) {
563 values[key] = value; 563 values[key] = value;
@@ -147,7 +147,7 @@ class PdfDocument { @@ -147,7 +147,7 @@ class PdfDocument {
147 Uint8List? _documentID; 147 Uint8List? _documentID;
148 148
149 /// Generates the document ID 149 /// Generates the document ID
150 - Uint8List? get documentID { 150 + Uint8List get documentID {
151 if (_documentID == null) { 151 if (_documentID == null) {
152 final rnd = math.Random(); 152 final rnd = math.Random();
153 _documentID = Uint8List.fromList(sha256 153 _documentID = Uint8List.fromList(sha256
@@ -156,7 +156,7 @@ class PdfDocument { @@ -156,7 +156,7 @@ class PdfDocument {
156 .bytes); 156 .bytes);
157 } 157 }
158 158
159 - return _documentID; 159 + return _documentID!;
160 } 160 }
161 161
162 /// Creates a new serial number 162 /// Creates a new serial number
@@ -169,18 +169,18 @@ class PdfDocument { @@ -169,18 +169,18 @@ class PdfDocument {
169 } 169 }
170 170
171 /// The root outline 171 /// The root outline
172 - PdfOutline? get outline { 172 + PdfOutline get outline {
173 if (_outline == null) { 173 if (_outline == null) {
174 _outline = PdfOutline(this); 174 _outline = PdfOutline(this);
175 catalog.outlines = _outline; 175 catalog.outlines = _outline;
176 } 176 }
177 - return _outline; 177 + return _outline!;
178 } 178 }
179 179
180 /// Graphic states for opacity and transfer modes 180 /// Graphic states for opacity and transfer modes
181 - PdfGraphicStates? get graphicStates { 181 + PdfGraphicStates get graphicStates {
182 _graphicStates ??= PdfGraphicStates(this); 182 _graphicStates ??= PdfGraphicStates(this);
183 - return _graphicStates; 183 + return _graphicStates!;
184 } 184 }
185 185
186 /// This document has at least one graphic state 186 /// This document has at least one graphic state
@@ -88,7 +88,7 @@ mixin PdfGraphicStream on PdfObject { @@ -88,7 +88,7 @@ mixin PdfGraphicStream on PdfObject {
88 88
89 /// Generate a name for the graphic state object 89 /// Generate a name for the graphic state object
90 String stateName(PdfGraphicState state) { 90 String stateName(PdfGraphicState state) {
91 - return pdfDocument.graphicStates!.stateName(state); 91 + return pdfDocument.graphicStates.stateName(state);
92 } 92 }
93 93
94 @override 94 @override
@@ -135,7 +135,7 @@ mixin PdfGraphicStream on PdfObject { @@ -135,7 +135,7 @@ mixin PdfGraphicStream on PdfObject {
135 '/K': PdfBool(knockoutTransparency), 135 '/K': PdfBool(knockoutTransparency),
136 }); 136 });
137 137
138 - resources['/ExtGState'] = pdfDocument.graphicStates!.ref(); 138 + resources['/ExtGState'] = pdfDocument.graphicStates.ref();
139 } 139 }
140 140
141 if (params.containsKey('/Resources')) { 141 if (params.containsKey('/Resources')) {
@@ -57,7 +57,7 @@ class PdfNames extends PdfObject { @@ -57,7 +57,7 @@ class PdfNames extends PdfObject {
57 57
58 for (var name in keys) { 58 for (var name in keys) {
59 dests.add(PdfSecString.fromString(this, name)); 59 dests.add(PdfSecString.fromString(this, name));
60 - dests.add(_dests[name]); 60 + dests.add(_dests[name]!);
61 } 61 }
62 62
63 final dict = PdfDict(); 63 final dict = PdfDict();
@@ -80,7 +80,7 @@ class PdfPage extends PdfObject with PdfGraphicStream { @@ -80,7 +80,7 @@ class PdfPage extends PdfObject with PdfGraphicStream {
80 final contentList = PdfArray.fromObjects(contents); 80 final contentList = PdfArray.fromObjects(contents);
81 81
82 if (params.containsKey('/Contents')) { 82 if (params.containsKey('/Contents')) {
83 - final prevContent = params['/Contents']; 83 + final prevContent = params['/Contents']!;
84 if (prevContent is PdfArray) { 84 if (prevContent is PdfArray) {
85 contentList.values.insertAll(0, prevContent.values); 85 contentList.values.insertAll(0, prevContent.values);
86 } else { 86 } else {
@@ -337,7 +337,7 @@ class Outline extends Anchor { @@ -337,7 +337,7 @@ class Outline extends Anchor {
337 var l = level; 337 var l = level;
338 338
339 while (l > 0) { 339 while (l > 0) {
340 - if (parent!.effectiveLevel == l) { 340 + if (parent.effectiveLevel == l) {
341 break; 341 break;
342 } 342 }
343 343
@@ -349,6 +349,6 @@ class Outline extends Anchor { @@ -349,6 +349,6 @@ class Outline extends Anchor {
349 l--; 349 l--;
350 } 350 }
351 351
352 - parent!.add(_outline!); 352 + parent.add(_outline!);
353 } 353 }
354 } 354 }
@@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl
4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf 4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf
5 repository: https://github.com/DavBfr/dart_pdf 5 repository: https://github.com/DavBfr/dart_pdf
6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues 6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues
7 -version: 3.0.0 7 +version: 3.0.1
8 8
9 environment: 9 environment:
10 sdk: ">=2.12.0-0 <3.0.0" 10 sdk: ">=2.12.0-0 <3.0.0"