Flutter仿拟态(Neumorphism)文本框插件material_neumorphic_textfield的使用

Flutter仿拟态(Neumorphism)文本框插件material_neumorphic_textfield的使用

material_neumorphic_textfield 是一个用于在 Flutter 应用中创建仿拟态(Neumorphism)风格文本框的插件。本示例将展示如何使用 material_neumorphic_textfield 插件来创建具有仿拟态效果的文本框。

使用方法

NeumorphicTextFieldNeumorphicTextFormField 是该插件的主要组件。它们继承自 Flutter 的原生 TextFieldTextFormField 组件,并添加了一些额外的属性以实现仿拟态效果。

添加属性

这些组件支持以下属性:

  • neumorphicStyle: 用于设置仿拟态样式。
  • margin: 设置文本框的外边距。
  • padding: 设置文本框的内边距。
  • color: 设置文本框的颜色。
  • depth: 设置文本框的深度。
  • borderRadius: 设置文本框的圆角半径。

示例代码

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Neumorphic TextField 示例'),
        ),
        body: Center(
          child: ExampleWidget(),
        ),
      ),
    );
  }
}

class ExampleWidget extends StatefulWidget {
  [@override](/user/override)
  _ExampleWidgetState createState() => _ExampleWidgetState();
}

class _ExampleWidgetState extends State<ExampleWidget> {
  String name = '';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        NeumorphicTextField(
          margin: const EdgeInsets.symmetric(vertical: 12),
          borderRadius: const BorderRadius.all(Radius.circular(12.0)),
          depth: -4,
          initialValue: name,
          decoration: const InputDecoration(
            labelText: '姓名',
            contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
          ),
          onChanged: (value) {
            setState(() {
              name = value;
            });
          },
        ),
        NeumorphicTextFormField(
          margin: const EdgeInsets.symmetric(vertical: 12),
          borderRadius: const BorderRadius.all(Radius.circular(12.0)),
          depth: -4,
          initialValue: name,
          decoration: const InputDecoration(
            labelText: '姓名',
            contentPadding: EdgeInsets.symmetric(horizontal: 12, vertical: 8),
          ),
          onChanged: (value) {
            setState(() {
              name = value;
            });
          },
        ),
      ],
    );
  }
}

更多关于Flutter仿拟态(Neumorphism)文本框插件material_neumorphic_textfield的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter仿拟态(Neumorphism)文本框插件material_neumorphic_textfield的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,仿拟态(Neumorphism)设计风格是一种流行的UI设计趋势,它通过使用阴影和高光来创建凸起或凹陷的效果,使UI元素看起来更加立体和真实。如果你想在Flutter中实现仿拟态的文本框,可以使用material_neumorphic_textfield插件。

1. 安装插件

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

dependencies:
  flutter:
    sdk: flutter
  material_neumorphic_textfield: ^0.1.0  # 请检查最新版本

然后运行flutter pub get来安装插件。

2. 使用NeumorphicTextField

安装完插件后,你可以在你的Flutter应用中使用NeumorphicTextField来创建一个仿拟态的文本框。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Neumorphic TextField Example'),
        ),
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(20.0),
            child: NeumorphicTextField(
              hintText: 'Enter your text here',
              prefixIcon: Icon(Icons.search),
              onChanged: (value) {
                print('Text changed: $value');
              },
            ),
          ),
        ),
      ),
    );
  }
}

3. 主要属性

NeumorphicTextField提供了一些常用的属性来定制文本框的外观和行为:

  • hintText: 提示文本,当文本框为空时显示。
  • prefixIcon: 文本框前面的图标。
  • suffixIcon: 文本框后面的图标。
  • onChanged: 当文本框内容发生变化时触发的回调。
  • controller: 用于控制文本框内容的TextEditingController
  • style: 文本样式。
  • decoration: 文本框的装饰属性,如边框、背景色等。
  • keyboardType: 键盘类型,如文本、数字、电子邮件等。

4. 自定义样式

你可以通过decoration属性进一步自定义文本框的样式。例如,你可以设置边框、背景色、圆角等。

NeumorphicTextField(
  hintText: 'Enter your text here',
  prefixIcon: Icon(Icons.search),
  decoration: InputDecoration(
    border: OutlineInputBorder(
      borderRadius: BorderRadius.circular(10.0),
    ),
    filled: true,
    fillColor: Colors.grey[200],
  ),
  onChanged: (value) {
    print('Text changed: $value');
  },
)
回到顶部