我有一个带有用户帐户的移动应用程序。默认个人资料图片是使用此在线工具生成的:
https://ui-avatars.com/api/?name=John+Doe&background=random.
生成如下:
所以现在我尝试在我的应用程序中的多个位置显示它们。有些图片加载良好,有些则无法显示。它不显示我输入的默认值。我在 Crashlytics 中发现加载过程中发生崩溃,这是消息:
Fatal Exception: FlutterError
Invalid argument(s): No host specified in URI. Error thrown resolving an image codec.
Fatal Exception: FlutterError
0 ??? 0x0 _HttpClient.openUrl (dart:_http)
1 ??? 0x0 IOClient.send + 63 (io_client.dart:63)
2 ??? 0x0 HttpFileService.get + 35 (file_service.dart:35)
3 ??? 0x0 WebHelper._download + 121 (web_helper.dart:121)
4 ??? 0x0 WebHelper._updateFile + 103 (web_helper.dart:103)
5 ??? 0x0 WebHelper._downloadOrAddToQueue + 71 (web_helper.dart:71)
图像 URL 存储在 Firebase 中,我只需获取此 URL 并要求我的代码显示它。
我在 Flutterflow 上工作,生成的用于显示图像的代码是这样的:
List<UsersRecord> adminUserUsersRecordList = snapshot.data!;
return GestureDetector(
onTap: () => FocusScope.of(context).requestFocus(_model.unfocusNode),
child: Scaffold(
key: scaffoldKey,
backgroundColor: FlutterFlowTheme.of(context).white,
body: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Align(
alignment: AlignmentDirectional(-1, -1),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(16, 50, 0, 0),
child: FlutterFlowIconButton(
borderColor: Colors.transparent,
borderRadius: 8,
borderWidth: 1,
buttonSize: 40,
fillColor: FlutterFlowTheme.of(context).secondary,
icon: Icon(
Icons.chevron_left_rounded,
color: FlutterFlowTheme.of(context).white,
size: 20,
),
onPressed: () async {
context.safePop();
},
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(24, 16, 0, 8),
child: Text(
'Liste des utilisateurs (${adminUserUsersRecordList.length.toString()})',
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Raleway',
color: FlutterFlowTheme.of(context).secondary,
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 8, 0, 40),
child: Builder(
builder: (context) {
final user = adminUserUsersRecordList.toList();
return ListView.builder(
padding: EdgeInsets.zero,
primary: false,
shrinkWrap: true,
scrollDirection: Axis.vertical,
itemCount: user.length,
itemBuilder: (context, userIndex) {
final userItem = user[userIndex];
return Padding(
padding:
EdgeInsetsDirectional.fromSTEB(24, 16, 24, 0),
child: InkWell(
splashColor: Colors.transparent,
focusColor: Colors.transparent,
hoverColor: Colors.transparent,
highlightColor: Colors.transparent,
onTap: () async {
context.pushNamed(
'User',
queryParameters: {
'user': serializeParam(
userItem.reference,
ParamType.DocumentReference,
),
}.withoutNulls,
);
},
child: Container(
width: double.infinity,
height: 70,
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
blurRadius: 80,
color: Color(0x1A000000),
offset: Offset(0, 15),
spreadRadius: 0,
)
],
),
child: Container(
width:
MediaQuery.sizeOf(context).width * 0.8,
child: Stack(
children: [
ClipRRect(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(8),
bottomRight: Radius.circular(0),
topLeft: Radius.circular(8),
topRight: Radius.circular(0),
),
child: CachedNetworkImage(
fadeInDuration:
Duration(milliseconds: 500),
fadeOutDuration:
Duration(milliseconds: 500),
imageUrl: userItem.photoUrl,
width: MediaQuery.sizeOf(context)
.width *
0.18,
height: 70,
fit: BoxFit.cover,
),
),
Align(
alignment: AlignmentDirectional(1, 0),
child: Container(
width: MediaQuery.sizeOf(context)
.width *
0.71,
height: 155,
decoration: BoxDecoration(
color:
FlutterFlowTheme.of(context)
.white,
borderRadius:
BorderRadius.circular(8),
),
child: Padding(
padding: EdgeInsetsDirectional
.fromSTEB(16, 0, 16, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
children: [
Column(
mainAxisSize:
MainAxisSize.max,
mainAxisAlignment:
MainAxisAlignment
.center,
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
RichText(
text: TextSpan(
children: [
TextSpan(
text: userItem
.displayName,
style:
TextStyle(),
)
],
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Raleway',
color: FlutterFlowTheme.of(
context)
.secondary,
fontSize: 16,
fontWeight:
FontWeight
.bold,
),
),
),
Padding(
padding:
EdgeInsetsDirectional
.fromSTEB(
0, 4, 0, 0),
child: Text(
'Inscrit le ${dateTimeFormat(
'd/M H:mm',
userItem
.createdTime,
locale: FFLocalizations
.of(context)
.languageCode,
)}',
style: FlutterFlowTheme
.of(context)
.bodyMedium
.override(
fontFamily:
'Raleway',
color: FlutterFlowTheme.of(
context)
.secondaryText,
fontWeight:
FontWeight
.w500,
),
),
),
],
),
InkWell(
splashColor:
Colors.transparent,
focusColor:
Colors.transparent,
hoverColor:
Colors.transparent,
highlightColor:
Colors.transparent,
onTap: () async {
await showModalBottomSheet(
isScrollControlled:
true,
backgroundColor:
Colors.transparent,
context: context,
builder: (context) {
return GestureDetector(
onTap: () => FocusScope
.of(context)
.requestFocus(_model
.unfocusNode),
child: Padding(
padding: MediaQuery
.viewInsetsOf(
context),
child:
BottomSheetFriendsWidget(
user: userItem
.reference,
),
),
);
},
).then((value) =>
setState(() {}));
},
child: Icon(
Icons.more_vert_sharp,
color: Colors.black,
size: 24,
),
),
],
),
),
),
),
],
),
),
),
),
);
},
);
},
),
),
],
),
),
),
);
这就是应用程序的外观:
我尝试阅读崩溃的堆栈跟踪并在互联网上搜索,但对我来说不是很清楚。
同样的问题在这里... 同样的问题在这里... 同样的问题在这里......如果有人解决了它,我们洗耳恭听