Skip to content

Commit 07e2956

Browse files
committed
新增catch error demo
1 parent 5bc9cc4 commit 07e2956

File tree

1 file changed

+39
-10
lines changed

1 file changed

+39
-10
lines changed

lib/backend/catcherror.dart

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,53 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_dojo/common/main_title_widget.dart';
3+
import 'package:flutter_dojo/common/multi_selection_widget.dart';
34

45
class CatchErrorWidget extends StatefulWidget {
56
@override
67
_CatchErrorWidgetState createState() => _CatchErrorWidgetState();
78
}
89

910
class _CatchErrorWidgetState extends State<CatchErrorWidget> {
11+
String url = '';
12+
String msg = '';
13+
1014
@override
1115
Widget build(BuildContext context) {
12-
return Column(
13-
children: <Widget>[
14-
MainTitleWidget('Catch error'),
15-
RaisedButton(
16-
onPressed: () {
17-
throw Exception();
18-
},
19-
child: Text('Throw exception'),
20-
)
21-
],
16+
return SingleChildScrollView(
17+
child: Column(
18+
children: <Widget>[
19+
MainTitleWidget('Catch Image Error'),
20+
MultiSelectionWidget(
21+
'Image Url',
22+
[
23+
'https://img.favpng.com/25/9/1/dart-google-developers-flutter-android-png-favpng-vi7iwNmVaBCVr91EF35XrnFfc.jpg',
24+
'xuyisheng',
25+
'https://www.baidu.com',
26+
],
27+
[
28+
'正确URL',
29+
'错误URL',
30+
'非图片URL',
31+
],
32+
(value) {
33+
setState(() => url = value);
34+
},
35+
),
36+
safeImageWidget(url),
37+
Text(msg),
38+
],
39+
),
2240
);
2341
}
42+
43+
safeImageWidget(String url) {
44+
Image image = Image.network(url);
45+
final ImageStream stream = image.image.resolve(ImageConfiguration.empty);
46+
stream.addListener(ImageStreamListener((_, __) {
47+
msg = '';
48+
}, onError: (e, trace) {
49+
msg = '$e-$trace';
50+
}));
51+
return image;
52+
}
2453
}

0 commit comments

Comments
 (0)