flutter文本输入框使用

打印 上一主题 下一主题

主题 1891|帖子 1891|积分 5673

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在Flutter中,实现输入框一般使用TextField,通过设置它的属性给输入框和内部文字设置差别的样式。
Flutter 输入框实现简单例子

  1. import 'package:flutter/material.dart';
  2. class MyEditPage extends StatelessWidget {
  3.   const MyEditPage({super.key});
  4.   @override
  5.   Widget build(BuildContext context) {
  6.     return Scaffold(
  7.       appBar: AppBar(
  8.         title: const Text("My EditText"),
  9.       ),
  10.       //body 是否延伸到底部控件
  11.       extendBody: true,
  12.       body: Column(
  13.         children: [
  14.           //Spacer创建一个可调整的空间隔,可用于调整Flex容器(如行或列)中窗口小部件之间的间距。
  15.           const Spacer(),
  16.           const Spacer(),
  17.           Container(
  18.               //通常用于给一个盒子的四边设置边距,用这个对象可以设置内边距。
  19.               margin: const EdgeInsets.all(10),
  20.               child: const Center(
  21.                 child: TextField(
  22.                   minLines: 1, //必须填1,输入内容才可居中,其他默认是左上对齐
  23.                   maxLines: 10, //最多行数,大于1即可
  24.                   decoration: InputDecoration(
  25.                     border: OutlineInputBorder(
  26.                         borderRadius: BorderRadius.all(Radius.circular(10)),
  27.                         //圆角
  28.                         borderSide: BorderSide(width: 1, color: Colors.yellow)),
  29.                     focusedBorder: OutlineInputBorder(
  30.                         borderRadius: BorderRadius.all(Radius.circular(10)),
  31.                         //圆角
  32.                         borderSide: BorderSide(width: 1, color: Colors.yellow)),
  33.                     enabledBorder: OutlineInputBorder(
  34.                         borderRadius: BorderRadius.all(Radius.circular(10)),
  35.                         //圆角
  36.                         borderSide: BorderSide(width: 1, color: Colors.yellow)),
  37.                     errorBorder: OutlineInputBorder(
  38.                         borderRadius: BorderRadius.all(Radius.circular(10)),
  39.                         //圆角
  40.                         borderSide: BorderSide(width: 1, color: Colors.yellow)),
  41.                     disabledBorder: OutlineInputBorder(
  42.                         borderRadius: BorderRadius.all(Radius.circular(10)),
  43.                         //圆角
  44.                         borderSide: BorderSide(width: 1, color: Colors.yellow)),
  45.                     fillColor: Colors.white,
  46.                     filled: true,
  47.                     contentPadding: const EdgeInsets.all(5),
  48.                   ),
  49.                 ),
  50.               ))
  51.         ],
  52.       ),
  53.     );
  54.   }
  55. }
复制代码

下述代码可以抽出来: 
  1. OutlineInputBorder(
  2.       borderRadius: BorderRadius.all(Radius.circular(10)), //圆角
  3.       borderSide: BorderSide(width: 1, color: Colors.yellow))
复制代码

  1. static const border = OutlineInputBorder(
  2.       borderRadius: BorderRadius.all(Radius.circular(10)), //圆角
  3.       borderSide: BorderSide(width: 1, color: Colors.yellow));
复制代码
  1. class MyEditPage extends StatelessWidget {  const MyEditPage({super.key});  static const border = OutlineInputBorder(
  2.       borderRadius: BorderRadius.all(Radius.circular(10)), //圆角
  3.       borderSide: BorderSide(width: 1, color: Colors.yellow));  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(        title: const Text("My EditText"),      ),      //body 是否延伸到底部控件      extendBody: true,      body: Column(        children: [          //Spacer创建一个可调整的空间隔,可用于调整Flex容器(如行或列)中窗口小部件之间的间距。          const Spacer(),          const Spacer(),          Container(              //通常用于给一个盒子的四边设置边距,用这个对象可以设置内边距。              margin: const EdgeInsets.all(10),              child: const Center(                child: TextField(                  minLines: 1, //必须填1,输入内容才可居中,其他默认是左上对齐                  maxLines: 10, //最多行数,大于1即可                  decoration: InputDecoration(                    border: border,                    focusedBorder: border,                    enabledBorder: border,                    errorBorder: border,                    disabledBorder: border,                    fillColor: Colors.white,                    filled: true,                    contentPadding: const EdgeInsets.all(5),                  ),                ),              ))        ],      ),    );  }  OutlineInputBorder getBorder() {    OutlineInputBorder outlineInputBorder = const OutlineInputBorder(        borderRadius: BorderRadius.all(Radius.circular(10)), //圆角        borderSide: BorderSide(width: 1, color: Colors.blue));    return outlineInputBorder;  }}
复制代码

TextField介绍

TextField 是 Material Design 文本字段。它允许用户使用硬件键盘或屏幕键盘输入文本。每当用户更改TextField 中的文本时,TextField 都会调用 onChanged 回调。如果用户完成在TextField 中的输入(比方,通过按下软键盘上的按钮),TextField 将调用 onSubmitted 回调。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表