【问题标题】:setState() method doesn't update the widgetsetState() 方法不更新小部件
【发布时间】:2021-06-07 20:00:08
【问题描述】:

它没有更新我的小部件。如果我点击开关打开_darkMode,开关总是向后移动(不改变)...

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

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

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

class _SettingsScreenState extends State<SettingsScreen> {
  @override
  Widget build(BuildContext context) {
    bool _darkMode = false;

return Container(
    child: ListView(
  children: [
    ListTile(
      title: const Text('Lights'),
      trailing: CupertinoSwitch(
        value: _darkMode,
        onChanged: (bool value) {
          setState(() {
            _darkMode = value;
            print('DarkMode: $_darkMode');
          });
        },
      ),
    ),
  ],
));

} }

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    _darkMode 必须是小部件状态中的字段。将其移到构建方法之外:

      class _SettingsScreenState extends State<SettingsScreen> {
      
      bool _darkMode = false;
    
      @override
      Widget build(BuildContext context) {
    

    【讨论】:

    • @JanHecker 如果 Ignacio 的回答解决了您的问题,请将问题标记为已解决,以便其他人可以在该状态下找到它。
    猜你喜欢
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2020-08-08
    相关资源
    最近更新 更多