Flutter 如何创建一个文本字段来更改用户输入的字体和颜色?

Flutter 如何创建一个文本字段来更改用户输入的字体和颜色?,flutter,dart,fonts,textfield,color-picker,Flutter,Dart,Fonts,Textfield,Color Picker,我对用飞镖和飞镖语言写作是相当陌生的。我试图创建一个文本字段,在用户输入时更改颜色和字体族。到目前为止,我有一个按钮,可以创建一个新的文本字段。我为字体创建了一个对话框。我只是不知道如何从字体对话框保存用户输入,并将其链接到文本字段 问题是我不知道如何链接字体,用户会选择实际更改文本字体 有人能帮我吗 这是我的密码: import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import

我对用飞镖和飞镖语言写作是相当陌生的。我试图创建一个文本字段,在用户输入时更改颜色和字体族。到目前为止,我有一个按钮,可以创建一个新的文本字段。我为字体创建了一个对话框。我只是不知道如何从字体对话框保存用户输入,并将其链接到文本字段

问题是我不知道如何链接字体,用户会选择实际更改文本字体

有人能帮我吗

这是我的密码:

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

void main() => runApp(TestApp());

TextField _textField1;
AlertDialog _fontPickerDialog;

class TestApp extends StatefulWidget {
  @override
  _TestAppState createState() => _TestAppState();
}

class _TestAppState extends State<TestApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Test App',
        home: Scaffold(
            backgroundColor: Colors.white,
            appBar: AppBar(
              title: Center(
                //for the centered title in the appbar
                child: Text(
                  'TextField Test',
                ),
              ),
            ),
            body: Stack(children: <Widget>[
              ///textfield
              Container(
                  alignment: Alignment.center,
                  child: RaisedButton(
                      child: Text('Click for TextField!'),
                      onPressed: () {
                        setState(() {
                          textField();
                        });
                      })),
              Container(
                child: _textField1,
              ),

              ///fontpicker
              Container(
                  alignment: Alignment.bottomLeft,
                  child: RaisedButton(
                      child: Text('Choose Font'),
                      onPressed: () {
                        setState(() {
                          fontPicker();
                        });
                      })),

              Container(
                alignment: Alignment.center,
                child: _fontPickerDialog,
              ),
            ])));
  }

  void textField() {
    _textField1 = TextField(
      style: TextStyle(
        fontSize: 25,
      ),
      decoration: InputDecoration(
        border: InputBorder.none,
        hintText: "Type Here...",
        hintStyle: TextStyle(
          fontSize: 25,
          color: Colors.black,
        ),
      ),
    );
  }

  void fontPicker() {
    _fontPickerDialog = AlertDialog(
        title: const Text(
          'Choose Font...',
        ),
        content: Container(
            width: double.maxFinite,
            child: ListView(children: [
              ListTile(
                  title: Text('Anton', style: GoogleFonts.getFont('Anton')),
                  onTap: () {
                    setState(() {
                      _fontPickerDialog = null;
                    });
                  })
            ])));
  }
}
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
导入“package:google_fonts/google_fonts.dart”;
void main()=>runApp(TestApp());
TextField_textField1;
AlertDialog\u fontPickerDialog;
类TestApp扩展了StatefulWidget{
@凌驾
_TestAppState createState();
}
类_TestAppState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“测试应用程序”,
家:脚手架(
背景颜色:Colors.white,
appBar:appBar(
标题:中心(
//用于应用程序栏中居中的标题
子:文本(
“文本字段测试”,
),
),
),
主体:堆栈(子对象:[
///文本字段
容器(
对齐:对齐.center,
孩子:升起按钮(
子项:文本('单击指定文本字段!'),
已按下:(){
设置状态(){
textField();
});
})),
容器(
孩子:_textField1,
),
///fontpicker
容器(
对齐:对齐。左下角,
孩子:升起按钮(
子项:文本(“选择字体”),
已按下:(){
设置状态(){
fontPicker();
});
})),
容器(
对齐:对齐.center,
孩子:_fontPickerDialog,
),
])));
}
void textField(){
_textField1=TextField(
样式:TextStyle(
尺寸:25,
),
装饰:输入装饰(
边框:InputBorder.none,
hintText:“在此处键入…”,
hintStyle:TextStyle(
尺寸:25,
颜色:颜色,黑色,
),
),
);
}
void-fontPicker(){
_fontPickerDialog=AlertDialog(
标题:常量文本(
“选择字体…”,
),
内容:容器(
宽度:double.maxFinite,
子项:列表视图(子项:[
列表砖(
标题:Text('Anton',style:GoogleFonts.getFont('Anton'),
onTap:(){
设置状态(){
_fontPickerDialog=null;
});
})
])));
}
}

创建一个状态变量
fontName
(可能默认为'Roboto'),在文本字段样式中使用它:

GoogleFonts.getFont(fontName, fontSize: 25)

并在字体选择器中的
setState
中更新它。

创建一个状态变量
fontName
(可能默认为“Roboto”),在文本字段样式中使用它:

GoogleFonts.getFont(fontName, fontSize: 25)

然后在字体选择器中的
setState
中更新它。

开始了✌我让它工作了,但有个问题。当我单击要使用的字体时,它不会更改字体,直到我单击按钮生成文本字段。似乎我一点击字体就不会刷新文本字段。你能更新问题中的代码吗?事实上它已经开始工作了!非常感谢你的链接!很高兴知道这一点✌好了✌我让它工作了,但有个问题。当我单击要使用的字体时,它不会更改字体,直到我单击按钮生成文本字段。似乎我一点击字体就不会刷新文本字段。你能更新问题中的代码吗?事实上它已经开始工作了!非常感谢你的链接!很高兴知道这一点✌非常感谢,这帮了大忙!非常感谢,这帮了大忙!