Flutter自定义文本输入框外观插件text_form_field_outline的使用

Flutter自定义文本输入框外观插件text_form_field_outline的使用

安装

  1. 在你的pubspec.yaml文件中添加此包的最新版本(并运行dart pub get):
dependencies:
  text_form_field_outline: ^0.0.3
  1. 导入包并在你的Flutter应用中使用它:
import 'package:text_form_field_outline/text_form_field_outline.dart';

特性

  • 默认边框围绕文本输入框
  • 可以更改边框颜色
  • 可以更改边框圆角半径

开始使用

以下是一个简单的示例,展示如何在应用中使用TextFormFieldOutline

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Text Form Field Outline',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Text Form Field Outline'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Center(
          child: TextFormFieldOutline(),
        ),
      ),
    );
  }
}

图片

示例代码

以下是完整的示例代码,展示了如何在Flutter应用中使用TextFormFieldOutline

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Text Form Field Outline',
      theme: ThemeData(
        // 这是你的应用的主题。
        //
        // 尝试这样做:运行`flutter run`。你会看到应用有一个紫色的工具栏。然后,在不退出应用的情况下,
        // 将下面的颜色方案中的seedColor更改为Colors.green,然后执行热重载(保存你的更改或按下IDE中的“热重载”按钮,或者如果使用命令行启动应用,则按“r”)。
        //
        // 注意:计数器并没有重置为零;应用的状态不会在重载时丢失。要重置状态,使用热重启。
        //
        // 这也适用于代码,而不仅仅是值:大多数代码更改都可以通过热重载来测试。
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Text Form Field Outline'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // 这个小部件是你的应用的主页。它是有状态的,意味着它有一个状态对象(定义在下面),其中包含影响其外观的字段。
  // 这个类是状态的配置。它保留了由父级(在这个例子中是App小部件)提供的值(在这个例子中是标题),并且被状态的构建方法使用。
  // 小部件子类中的字段总是标记为“final”。

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Center(
          child: TextFormFieldOutline(),
        ),
      ),
    );
  }
}

更多关于Flutter自定义文本输入框外观插件text_form_field_outline的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义文本输入框外观插件text_form_field_outline的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 text_form_field_outline 插件来自定义 Flutter 中 TextFormField 外观的示例代码。这个插件允许你更灵活地控制文本输入框的边框样式。

首先,你需要在你的 pubspec.yaml 文件中添加 text_form_field_outline 依赖:

dependencies:
  flutter:
    sdk: flutter
  text_form_field_outline: ^x.y.z  # 请将 x.y.z 替换为最新版本号

然后运行 flutter pub get 来获取依赖。

接下来是一个完整的示例代码,展示如何使用 TextFormFieldOutline 来自定义 TextFormField 的外观:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('TextFormField Outline Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: CustomTextFormField(),
        ),
      ),
    );
  }
}

class CustomTextFormField extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        TextFormField(
          decoration: InputDecoration(
            labelText: 'Default Outline',
          ),
          validator: (value) {
            if (value == null || value.isEmpty) {
              return 'Please enter some text';
            }
            return null;
          },
        ),
        SizedBox(height: 20),
        TextFormField(
          decoration: InputDecoration(
            labelText: 'Custom Outline',
            prefixIcon: Icon(Icons.account_circle),
          ),
          builder: (BuildContext context, TextEditingController controller, TextFormFieldState field) {
            return TextFormFieldOutline(
              controller: controller,
              focusNode: field.focusNode,
              decoration: field.decoration.copyWith(
                enabledBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.blueAccent, width: 2.0),
                  borderRadius: BorderRadius.circular(20.0),
                ),
                focusedBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.blue, width: 2.0),
                  borderRadius: BorderRadius.circular(20.0),
                ),
                errorBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.red, width: 2.0),
                  borderRadius: BorderRadius.circular(20.0),
                ),
                focusedErrorBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: Colors.redAccent, width: 2.0),
                  borderRadius: BorderRadius.circular(20.0),
                ),
              ),
            );
          },
          validator: (value) {
            if (value == null || value.isEmpty) {
              return 'Please enter some text';
            }
            return null;
          },
        ),
      ],
    );
  }
}

在这个示例中,我们展示了两种文本输入框:一个是默认的 TextFormField,另一个是使用了 TextFormFieldOutline 来自定义边框样式的文本输入框。

  • TextFormFieldOutlinedecoration 属性允许你定制边框的样式,包括普通状态、聚焦状态、错误状态以及聚焦错误状态的边框颜色和圆角。
  • builder 参数用于构建 TextFormFieldOutline,它接收当前的 TextEditingControllerFocusNode,以便与 TextFormField 的状态保持同步。

通过这种方式,你可以灵活地定制 TextFormField 的外观,满足各种设计需求。

回到顶部