实例成员'setState'无法在初始化程序中访问

穆罕默德·艾尔文·希奇·拉克索诺

即时消息非常扑朔迷离。我不知道该怎么解决。

我正在尝试使用Flutter插件:flutter_numpad_widget

这是我的完整代码:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

bool _confirmEnabled = false;

class _MyAppState extends State<MyApp> {
  int maxRawLength;
  final NumpadController _numpadController = NumpadController(
    format: NumpadFormat.NONE,
    hintText: "Ketikkan NIP",
    onInputValidChange: (bool valid) => setState(() {
      _confirmEnabled = valid;
    }),
  );
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Numpad Example',
        theme: ThemeData(
            primarySwatch: Colors.amber,
            buttonTheme: ButtonThemeData(
                textTheme: ButtonTextTheme.normal,
                buttonColor: Colors.blueGrey[300],
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(Radius.circular(30))))),
        home: Scaffold(
          appBar: AppBar(
            title: Text('Numpad Example'),
          ),
          body: Container(
            child: Column(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: NumpadText(
                    style: TextStyle(fontSize: 30),
                    controller: _numpadController,
                  ),
                ),
                Expanded(
                  child: Numpad(
                    controller: _numpadController,
                    buttonTextSize: 40,
                  ),
                )
              ],
            ),
          ),
        ));
  }
}

我按照这里的文档:onInputValidChange

但在这一行中,它总是让我出错。错误“无法在初始化程序中访问实例成员'setState'。”:

onInputValidChange: (bool valid) => setState(() {
      _confirmEnabled = valid;
    }),

即时通讯已经在几天之内搜索,却一无所获。

感谢您的帮助

丹帕塔

为您的问题添加一些解释,我认为总体上也是有效的:

您应该在中初始化所有状态属性initState如果您有布尔标志或原始属性,但可以使用对象,那么通常应在```initState``中进行初始化。在您的情况下:

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

bool _confirmEnabled = false;

class _MyAppState extends State<MyApp> {
  int maxRawLength;
  final NumpadController _numpadController; // this is the declaration

@override
void initState() {
  super.initState();
  _numpadController = NumpadController( // here is the init
    format: NumpadFormat.NONE,
    hintText: "Ketikkan NIP",
    onInputValidChange: (bool valid) => setState(() {
      _confirmEnabled = valid;
    }),
  );
}

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Numpad Example',
        theme: ThemeData(
            primarySwatch: Colors.amber,
            buttonTheme: ButtonThemeData(
                textTheme: ButtonTextTheme.normal,
                buttonColor: Colors.blueGrey[300],
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(Radius.circular(30))))),
        home: Scaffold(
          appBar: AppBar(
            title: Text('Numpad Example'),
          ),
          body: Container(
            child: Column(
              children: <Widget>[
                Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: NumpadText(
                    style: TextStyle(fontSize: 30),
                    controller: _numpadController,
                  ),
                ),
                Expanded(
                  child: Numpad(
                    controller: _numpadController,
                    buttonTextSize: 40,
                  ),
                )
              ],
            ),
          ),
        ));
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

实例成员“ currentComponentConfiguration”无法在初始化程序中访问

实例成员“ widget”无法在初始化程序中访问

无法在初始化程序中访问实例成员“id”

无法在初始化程序中访问实例成员 ''

无法在初始化程序中访问实例成员“键”

无法在初始化程序中访问实例成员“地图”颤振中的错误

无法在初始化程序中访问实例成员“小部件”。扑

Flutter-无法在初始化程序中访问实例成员“ remoteConfig”

无法在初始化程序中访问实例成员“上下文”。颤振

错误“无法在初始化程序中访问实例成员 'widget'。”

无法在初始化程序中访问实例成员“用户”。(扑)

如何修复错误“无法在初始化程序中访问实例成员‘_remoteConfigService’。”

实例“小部件”无法在初始化程序中访问

实例成员“gantiIndex”不能作为初始化程序访问

无法在初始化程序中访问实例成员“PageNumber”。尝试用不同的表达式替换对实例成员的引用

在初始化器中无法访问实例成员“ params”

在初始化程序中只能访问静态成员,错误

Flutter:在初始化程序中只能访问静态成员

在初始化程序中只能访问静态成员

我如何解决此错误无法在初始化程序中访问实例“小部件”

使用无状态小部件创建简单的随机化器时出错。实例成员无法在初始化程序中访问

无法在初始化程序中访问实例成员“上下文”。(implicit_this_reference_in_initializer at [rtoapp] lib\seriveSelection.dart:45)

如何在 Swift UI 中初始化状态变量而不出现错误“无法在属性初始化程序中使用实例成员‘XXX’;”

在clang中实例化之后的静态成员初始化

如何初始化实例成员?

错误“无法在属性初始化程序中使用实例成员'haberUrl'”

PHP-在类的构造函数中初始化对象的实例,在静态成员中进行访问

实例初始化程序中的StackOverflowError

实例成员不可访问