Flutter中如何在StatefulWidget的build方法内使用传入的参数变量?
问题原因
- Flutter中
State子类无需通过构造函数接收所属StatefulWidget的属性,可直接通过系统提供的widget前缀访问父组件的所有公开属性,你写的State构造函数没有将传入的参数保存为实例变量,也不符合官方开发规范。 - build方法中直接调用
sonuc,当前_BilgiEkrani类中没有定义该实例变量,因此IDE提示未定义。 - 额外补充:原代码中
AppBar的title参数接收的是Widget类型,直接传入String也会触发类型错误。
修复后代码
import 'dart:io'; import 'package:camera/camera.dart'; import 'package:google_ml_kit/google_ml_kit.dart'; import 'package:flutter/material.dart'; class BilgiEkrani extends StatefulWidget { final String sonuc; final double oran; const BilgiEkrani({required this.sonuc, required this.oran}); @override _BilgiEkrani createState() => _BilgiEkrani(); } class _BilgiEkrani extends State<BilgiEkrani> { // 删除自定义的无效State构造函数 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( toolbarHeight: 20, backgroundColor: Colors.pinkAccent, // 通过widget前缀获取父组件属性,同时用Text组件包裹字符串 title: Text(widget.sonuc), )); } }
注意事项
- 所有
StatefulWidget定义的公开属性,在对应State类中都可以通过widget.属性名直接调用,无需手动传参 - 不要给State类自定义构造函数传递参数,不符合Flutter设计规范,容易出现状态同步异常
内容的提问来源于stack exchange,提问作者CidQu
相关产品推荐
相关产品推荐

