【发布时间】:2021-08-19 12:04:08
【问题描述】:
如何将变量值从一个有状态小部件类访问到另一个有状态小部件类。两个小部件类也位于不同的 .dart 文件中。
这是具有变量“列表点”的 screen.dart。我想在 home.dart 中使用它。
class Draw extends StatefulWidget {
const Draw({Key? key}) : super(key: key);
@override
_DrawState createState() => _DrawState();
}
class _DrawState extends State<Draw> {
List points = [];
@override
Widget build(BuildContext context) {
return GestureDetector(
onPanUpdate: (DragUpdateDetails details) {
Offset localPos = details.localPosition;
setState(() {
if (localPos.dx >= 0 &&
localPos.dx <= MediaQuery.of(context).size.width * 0.8 &&
localPos.dy >= 0 &&
localPos.dy <= MediaQuery.of(context).size.height * 0.5)
points.add(localPos);
else {
points.add(null);
}
});
},
onPanEnd: (DragEndDetails details) {
points.add(null);
},
child: CustomPaint(
painter: Painter(points: points),
),
);
}
}
...rest of code
这是 home.dart
class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
backgroundColor: Colors.yellowAccent,
onPressed: () {
setState(() {
});
},
child: Icon(
Icons.restore_page,
color: Colors.black,
),
),
backgroundColor: Colors.grey[300],
appBar: AppBar(
backgroundColor: Colors.yellowAccent,
title: Text(
"Digit Recognizer",
style: TextStyle(color: Colors.black),
),
centerTitle: true,
),
body: Center(
child: Column(
children: [
SizedBox(
height: 15,
),
Container(
height: MediaQuery.of(context).size.height * 0.5,
width: MediaQuery.of(context).size.width * 0.8,
decoration: BoxDecoration(
color: Colors.white, border: Border.all(color: Colors.black)),
child: Draw(),
),
...rest of code
我想从 home.dart 中的 floatingActionButton 的 on press() 函数中的 screen.dart 变量中访问“点”。
【问题讨论】:
-
您能展示一下您是如何在这两个小部件之间导航的吗?请提供一些代码,以便我们了解您的导航方式以及变量是静态的还是动态的
-
如果您是 Flutter 新手,请参考此视频 ==> youtu.be/l3KnuUmlr-w。这将消除您的所有疑虑。
-
你能提供一些代码吗?
-
@SiddharthAgrawal 我添加了代码。
-
@UrDistraction 这是代码。