有什么方法可以在函数中使用 setState() (第 26 行)?我试图从我的 main.dart 文件中调用函数 item (其中包括 setState),但 Flutter 不喜欢这样。此外,item 函数与 main.dart 位于不同的文件中。有人可以帮我吗?
项目功能:
item(itemName, color, itemVariable) {
return Container(
color: color ? Colors.grey[200] : Colors.white,
child: Row(
children: [
Flexible(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"${itemVariable}x",
style: const TextStyle(fontSize: 25),
),
),
),
Text(
itemName,
style: const TextStyle(fontSize: 25),
),
Flexible(
child: Padding(
padding: const EdgeInsets.fromLTRB(30, 5, 0, 10),
child: TextField(
onSubmitted: (value) {
itemVariable = int.parse(value);
print("Hodnota pro ${itemName} nastavena na: ${itemVariable}");
setState(() {});
},
keyboardType: TextInputType.number,
decoration: InputDecoration(
filled: true,
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
borderSide: const BorderSide(color: Colors.blue),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(15),
borderSide: const BorderSide(color: Colors.blue, width: 2),
),
),
),
),
),
],
),
);
}
main.dart文件:
import 'package:flutter/material.dart';
import 'package:intr_obleceni/items.dart';
import 'package:intr_obleceni/functions.dart';
void main() => runApp(
const MaterialApp(
home: Main(),
title: "Intr - seznam oblečení",
),
);
class Main extends StatefulWidget {
const Main({Key? key}) : super(key: key);
@override
_MainState createState() => _MainState();
}
class _MainState extends State<Main> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Internát - seznam oblečení"),
elevation: 2,
),
body: ListView(
children: [
category("Bundy", false),
item("Bunda", false, Bundy.bunda),
item("Softčílová bunda", false, Bundy.softcilovaBunda),
category("Ostatní", true),
item("Ručník", true, Ostatni.rucnik)
],
),
);
}
}
最佳答案
不要在函数中调用 setState() 函数,而是在参数中包含回调函数,如下所示:
item(itemName, color, itemVariable {Function? callback}) {
// where you used setState(), use callback()
}
然后在您调用该项目函数的 main.dart 文件中,将 setState 包装在回调函数中。
关于Flutter:在函数中使用 setState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71243912/