Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
David PHAM-VAN
2019-05-17 09:30:10 -0400
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
60a3bce95493b3d0ddce5bcdfd71b81287b5cc2f
60a3bce9
1 parent
f36f4858
Fix Table Widget
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
148 additions
and
0 deletions
pdf/CHANGELOG.md
pdf/lib/widgets/table.dart
pdf/test/all_tests.dart
pdf/test/widget_table_test.dart
pdf/CHANGELOG.md
View file @
60a3bce
# 1.3.10
*
Deprecate the document argument in Printing.sharePdf()
*
Add default value to alpha in PdfColor variants
*
Fix Table Widget
# 1.3.9
*
Fix Transform Widget alignment
...
...
pdf/lib/widgets/table.dart
View file @
60a3bce
...
...
@@ -182,6 +182,11 @@ class Table extends Widget implements SpanningWidget {
}
}
if
(
_widths
.
isEmpty
)
{
box
=
PdfRect
.
fromPoints
(
PdfPoint
.
zero
,
constraints
.
smallest
);
return
;
}
final
double
maxWidth
=
_widths
.
reduce
((
double
a
,
double
b
)
=>
a
+
b
);
// Compute column widths using flex and estimated width
...
...
@@ -277,6 +282,10 @@ class Table extends Widget implements SpanningWidget {
..
saveContext
()
..
setTransform
(
mat
);
if
(
_context
.
lastLine
==
0
)
{
return
;
}
int
index
=
0
;
for
(
TableRow
row
in
children
)
{
if
(
index
++
<
_context
.
firstLine
&&
!
row
.
repeat
)
{
...
...
pdf/test/all_tests.dart
View file @
60a3bce
...
...
@@ -28,6 +28,7 @@ import 'type1_test.dart' as type1;
import
'widget_basic_test.dart'
as
widget_basic
;
import
'widget_clip_test.dart'
as
widget_clip
;
import
'widget_container_test.dart'
as
widget_container
;
import
'widget_table_test.dart'
as
widget_table
;
import
'widget_test.dart'
as
widget
;
void
main
(
)
{
...
...
@@ -42,6 +43,7 @@ void main() {
widget_basic
.
main
();
widget_clip
.
main
();
widget_container
.
main
();
widget_table
.
main
();
widget
.
main
();
example
.
main
();
}
...
...
pdf/test/widget_table_test.dart
0 → 100644
View file @
60a3bce
/*
* Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import
'dart:io'
;
import
'dart:math'
as
math
;
import
'package:meta/meta.dart'
;
import
'package:test/test.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
;
Document
pdf
;
List
<
TableRow
>
buildTable
(
{
@required
Context
context
,
int
count
=
10
,
bool
repeatHeader
=
false
})
{
final
List
<
TableRow
>
rows
=
<
TableRow
>[];
{
final
List
<
Widget
>
tableRow
=
<
Widget
>[];
for
(
String
cell
in
<
String
>[
'Hue'
,
'Color'
,
'ARGB'
])
{
tableRow
.
add
(
Container
(
alignment:
Alignment
.
center
,
margin:
const
EdgeInsets
.
all
(
5
),
child:
Text
(
cell
,
style:
Theme
.
of
(
context
).
tableHeader
)));
}
rows
.
add
(
TableRow
(
children:
tableRow
,
repeat:
repeatHeader
));
}
for
(
int
y
=
0
;
y
<
count
;
y
++)
{
final
double
h
=
math
.
sin
(
y
/
count
)
*
365
;
final
PdfColor
color
=
PdfColorHsv
(
h
,
1.0
,
1.0
);
final
List
<
Widget
>
tableRow
=
<
Widget
>[
Container
(
margin:
const
EdgeInsets
.
all
(
5
),
child:
Text
(
'
${h.toInt()}
°'
,
style:
Theme
.
of
(
context
).
tableCell
)),
Container
(
margin:
const
EdgeInsets
.
all
(
5
),
decoration:
BoxDecoration
(
color:
color
,
borderRadius:
5
),
height:
Theme
.
of
(
context
).
tableCell
.
fontSize
),
Container
(
margin:
const
EdgeInsets
.
all
(
5
),
child:
Text
(
'
${color.toHex()}
'
,
style:
Theme
.
of
(
context
).
tableCell
)),
];
rows
.
add
(
TableRow
(
children:
tableRow
));
}
return
rows
;
}
void
main
(
)
{
setUpAll
(()
{
Document
.
debug
=
true
;
pdf
=
Document
();
});
test
(
'Table Widget empty'
,
()
{
pdf
.
addPage
(
Page
(
build:
(
Context
context
)
=>
Table
(),
));
});
test
(
'Table Widget filled'
,
()
{
pdf
.
addPage
(
Page
(
build:
(
Context
context
)
=>
Table
(
children:
buildTable
(
context:
context
,
count:
20
),
border:
const
TableBorder
(),
tableWidth:
TableWidth
.
max
,
),
));
});
test
(
'Table Widget multi-pages'
,
()
{
pdf
.
addPage
(
MultiPage
(
build:
(
Context
context
)
=>
<
Widget
>[
Table
(
children:
buildTable
(
context:
context
,
count:
200
),
border:
const
TableBorder
(),
tableWidth:
TableWidth
.
max
,
),
]));
});
test
(
'Table Widget multi-pages with header'
,
()
{
pdf
.
addPage
(
MultiPage
(
build:
(
Context
context
)
=>
<
Widget
>[
Table
(
children:
buildTable
(
context:
context
,
count:
200
,
repeatHeader:
true
),
border:
const
TableBorder
(),
tableWidth:
TableWidth
.
max
,
),
]));
});
test
(
'Table Widget multi-pages short'
,
()
{
pdf
.
addPage
(
MultiPage
(
build:
(
Context
context
)
=>
<
Widget
>[
SizedBox
(
height:
710
),
Table
(
children:
buildTable
(
context:
context
,
count:
4
),
border:
const
TableBorder
(),
tableWidth:
TableWidth
.
max
,
),
]));
});
test
(
'Table Widget multi-pages short header'
,
()
{
pdf
.
addPage
(
MultiPage
(
build:
(
Context
context
)
=>
<
Widget
>[
SizedBox
(
height:
710
),
Table
(
children:
buildTable
(
context:
context
,
count:
4
,
repeatHeader:
true
),
border:
const
TableBorder
(),
tableWidth:
TableWidth
.
max
,
),
]));
});
tearDownAll
(()
{
final
File
file
=
File
(
'widgets-table.pdf'
);
file
.
writeAsBytesSync
(
pdf
.
save
());
});
}
...
...
Please
register
or
login
to post a comment