如何解决 BoxConstraints forces an infinite width exception in flutter?
How to solve BoxConstraints forces an infinite width exception in flutter?
您好,我只是想在列表项的右侧添加一个切换按钮。在这样做的同时,我最终遇到了这个 BoxConstraints forces an infinite width error。因为我是一个完全的初学者,所以有人可以让我知道这是什么意思吗?我必须在我的代码中做哪些更改才能消除此错误?
import 'package:attendee/constants.dart';
import 'package:flutter/material.dart';
import 'package:attendee/models/userdeails.dart';
class userdetailsTile extends StatelessWidget {
final userdetails userdetail;
userdetailsTile({this.userdetail});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.only(top: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Card(
//margin: EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0),
child: GestureDetector(
child: ListTile(
leading: CircleAvatar(
radius: 25.0,
backgroundColor: Colors.lightGreen,
),
title: Text(userdetail.fullname),
),
),
),
Switch(
value: present,
onChanged: (value) {
//setState(() {
present = value;
print(present);
//});
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
),
//),
],
),
);
}
}
请检查以下解决方案。
解决方案 1
return Material(child: Padding(
padding: EdgeInsets.only(top: 8.0),
child: ListTile(
leading: CircleAvatar(
radius: 25.0,
backgroundColor: Colors.lightGreen,
),
title: Text(userdetail.fullname),
trailing: Switch(
value: present,
onChanged: (value) {
//setState(() {
present = value;
print(present);
//});
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
),
),
),
);
解决方案 2
return Material(child:
Padding(
padding: EdgeInsets.only(top: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: Card(
//margin: EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0),
child: Row(
children: [
CircleAvatar(
radius: 25.0,
backgroundColor: Colors.lightGreen,
), Text(userdetail.fullname)
],
),
),
),
Switch(
value: present,
onChanged: (value) {
//setState(() {
present = value;
print(present);
//});
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
),
//),
],
),
),
);
您好,我只是想在列表项的右侧添加一个切换按钮。在这样做的同时,我最终遇到了这个 BoxConstraints forces an infinite width error。因为我是一个完全的初学者,所以有人可以让我知道这是什么意思吗?我必须在我的代码中做哪些更改才能消除此错误?
import 'package:attendee/constants.dart';
import 'package:flutter/material.dart';
import 'package:attendee/models/userdeails.dart';
class userdetailsTile extends StatelessWidget {
final userdetails userdetail;
userdetailsTile({this.userdetail});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.only(top: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Card(
//margin: EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0),
child: GestureDetector(
child: ListTile(
leading: CircleAvatar(
radius: 25.0,
backgroundColor: Colors.lightGreen,
),
title: Text(userdetail.fullname),
),
),
),
Switch(
value: present,
onChanged: (value) {
//setState(() {
present = value;
print(present);
//});
},
activeTrackColor: Colors.lightGreenAccent,
activeColor: Colors.green,
),
//),
],
),
);
}
}
请检查以下解决方案。
解决方案 1
return Material(child: Padding( padding: EdgeInsets.only(top: 8.0), child: ListTile( leading: CircleAvatar( radius: 25.0, backgroundColor: Colors.lightGreen, ), title: Text(userdetail.fullname), trailing: Switch( value: present, onChanged: (value) { //setState(() { present = value; print(present); //}); }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ), ), ), );
解决方案 2
return Material(child: Padding( padding: EdgeInsets.only(top: 8.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ Expanded( child: Card( //margin: EdgeInsets.fromLTRB(20.0, 6.0, 20.0, 0.0), child: Row( children: [ CircleAvatar( radius: 25.0, backgroundColor: Colors.lightGreen, ), Text(userdetail.fullname) ], ), ), ), Switch( value: present, onChanged: (value) { //setState(() { present = value; print(present); //}); }, activeTrackColor: Colors.lightGreenAccent, activeColor: Colors.green, ), //), ], ), ), );