flutter - 在抽象类中访问 TextFormField 控制器
问题描述
我想知道是否有任何方法可以访问主有状态小部件之外的控制器。
例如,我创建了一个抽象类来分离有状态类的溢出。
我想在小部件中使用文本值的问题,据我所知,它可以通过some_controller.text访问
有什么建议吗?
abstract class TextFieldWidget {
TextEditingController _emailController = TextEditingController();
static Widget emailTextFeild() {
return Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: Colors.grey[200]))),
child: TextFormField(
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.orange[100], width: 2)),
floatingLabelBehavior: FloatingLabelBehavior.always,
labelText: "Email",
prefixIcon: Icon(
Icons.person,
color: Colors.blueAccent[100],
),
hintStyle: TextStyle(color: Colors.grey),
border: InputBorder.none),
),
);
}
}
解决方案
您想在全班使用控制器吗?
您可以通过在外部使用它来做到这一点,如下所示。
TextEditingController _emailController = TextEditingController();
接着,
abstract class TextFieldWidget {
static Widget emailTextFeild(email) {
return Container(
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
border: Border(bottom: BorderSide(color: Colors.grey[200]))),
child: TextFormField(
controller: email,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.orange[100], width: 2)),
floatingLabelBehavior: FloatingLabelBehavior.always,
labelText: "Email",
prefixIcon: Icon(
Icons.person,
color: Colors.blueAccent[100],
),
hintStyle: TextStyle(color: Colors.grey),
border: InputBorder.none),
),
);
}
}
你在主类中调用类,如下所示。
import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {
final ScrollController _scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Padding(
padding: const EdgeInsets.all(16.0),
child: TextFieldWidget.emailTextFeild(_emailController),
),
),
);
}
}
推荐阅读
- amazon-web-services - 无法在 AWS 管道上部署应用程序
- javascript - 我想通过 API 解析 JSON 数据并将其公开发布在我的本地网站上
- android - 当我添加 GDPR 欧盟同意时,为什么我的应用程序 android 崩溃?
- debugging - 如何在 Apps 脚本仪表板中查看完整日志
- docusignapi - 通过 EnvelopeService 发送信封(Docusign APEX 工具包)
- sql - 使用 hive 识别列中是否重复相同的值
- html - Gtmetrix 加载未知的 html 资产
- c++ - 是否有函数或公式将字符串“字母”转换为 C++ 中的十六进制
- c++ - 有没有办法声明一个将在源文件中使用 constexpr 定义的公共静态常量(有什么区别)?
- python - 在 pandas 中操作直方图