【问题标题】:How to solve BoxConstraints forces an infinite width exception in flutter?如何解决 BoxConstraints 在颤动中强制出现无限宽度异常?
【发布时间】:2021-08-03 12:31:16
【问题描述】:

您好,我只是想在列表项的右侧包含一个切换按钮。这样做时,我最终得到了这个 BoxConstraints 强制无限宽度错误。作为一个完整的初学者,有人可以让我知道这是什么意思吗?以及我必须对代码进行哪些更改才能消除此错误?

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,
          ),
          //),
        ],
      ),
    );
  }
}

【问题讨论】:

    标签: flutter dart google-cloud-firestore flutter-layout flutter-animation


    【解决方案1】:

    请检查以下解决方案。

    • 解决方案 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,
              ),
              //),
            ],
          ),
         ),
        );
      

    【讨论】:

    • 很好用@Mardel。请告诉我是什么导致了这个问题。
    • 我为 Switch Widget 添加了 Material Widget,并使用 Expanded 设置了宽度限制。
    猜你喜欢
    • 1970-01-01
    • 2019-02-25
    • 2019-11-04
    • 2020-09-21
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多