dart 如何在Flutter中更改默认的前缀图标主题?

inb24sb2  于 2023-05-11  发布在  Flutter
关注(0)|答案(2)|浏览(126)

我有个问题。我用colorScheme改变了TextField中前缀图标的颜色,但如何改变默认的前缀图标颜色。我已经试着这样改变了

data: Theme.of(context).copyWith(
        iconTheme: Theme.of(context).iconTheme.copyWith(
            color: Colors.red,
        ),
        colorScheme: Theme.of(context).colorScheme.copyWith(
            primary: Colors.blue,
        ),
),

但这样不行

e0bqpujr

e0bqpujr1#

如果你想要一个固定的图标颜色,你可以使用这个:

TextField(
  decoration: InputDecoration(
    prefixIcon: Icon(Icons.done, color: Colors.green),
  ),
),

Github上有关于此的问题

更新:

看到这段代码了吗

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  FocusNode _focus = FocusNode();

  //Define your default color  
  Color fieldColor = Colors.green;

  //Using focus node everytime the focus change the listener will change the 
  //color and call setState
  @override
  void initState() {
    super.initState();
    _focus.addListener(() {
      setState(() {
        fieldColor = _focus.hasFocus ? Colors.red : Colors.black;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: TextField(
          focusNode: _focus,
          decoration: InputDecoration(
            prefixIcon: Icon(Icons.done, color: fieldColor),
          ),
        ),
      ),
    );
  }
}
btqmn9zl

btqmn9zl2#

我可以更改TextField的 Package :

Theme(
      data: Theme.of(context).copyWith(primaryColor: Colors.black),
      child: TextFormField(),
    );

相关问题