账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    flutter 自定义控件不能放输入框
    44
    0

    本人初学flutter ,今天要自定义一个输入框控件,结果遇到一个奇怪的问题,自定义的空间框里,不能放入输入框,放入就报错,代码如下,是不是哪里冲突里?

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';

    class SearchTextInput extends StatelessWidget {
    @override
    Widget build(BuildContext context) {

    // TODO: implement build
    return Container(
      height: 20,
      decoration:
          BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(5))),
      child: Row(
        mainAxisSize: MainAxisSize.max,
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          Container(
            decoration: BoxDecoration(
                border:
                    Border(right: BorderSide(color: Colors.black, width: 1))),
            child: Row(
              children: <Widget>[Text("北京"), Icon(Icons.arrow_drop_down)],
            ),
          ),
          Padding(
            padding: EdgeInsets.only(
              left: 5,
            ),

    // child: Text("---sssssssssssssssssssssssssssss"), //这行代码可以

            child: TextField( ), //这行代码不行
          ),
        ],
      ),
    );

    }
    }

    直接只放一个输入框,没有问题,一旦放了布局控件,就报错,错误内容:

    Performing hot reload...
    Syncing files to device Android SDK built for x86...
    I/flutter (15752): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
    I/flutter (15752): The following assertion was thrown during performLayout():
    I/flutter (15752): BoxConstraints forces an infinite width.
    I/flutter (15752): These invalid constraints were provided to RenderRepaintBoundary's layout() function by the
    I/flutter (15752): following function, which probably computed the invalid constraints in question:
    I/flutter (15752): _RenderDecoration._layout.layoutLineBox (package:flutter/src/material/input_decorator.dart:815:11)
    I/flutter (15752): The offending constraints were:
    I/flutter (15752): BoxConstraints(w=Infinity, 0.0<=h<=120.0)

    环境: window 10 家庭版,
    代码位置: https://github.com/alvin19876...

    希望有大神指点一下

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Flutter中,完全可以自定义控件并放置输入框(TextField或TextFormField)。下面是一个简单的例子:

      ```dart import 'package:flutter/material.dart';

      class CustomInputField extends StatelessWidget { final String hintText; final TextEditingController controller;

      CustomInputField({required this.hintText, required this.controller});

      @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.grey[200], borderRadius: BorderRadius.circular(10.0), ), padding: EdgeInsets.all(10.0), child: TextField( controller: controller, decoration: InputDecoration( hintText: hintText, border: InputBorder.none, ), ), ); } } ```

      在这个例子中,我们创建了一个名为CustomInputField的自定义控件,它包含一个TextField,并且可以接受提示文本和文本控制器作为参数。这样你就可以在你的应用中以自定义样式使用输入框了。

      使用方式如下:

      ```dart final TextEditingController _controller = TextEditingController();

      // 在构建方法中使用 CustomInputField( hintText: '请输入内容', controller: _controller, ) ```

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部