Flutter 从另一个小部件更改小部件的状态
我最近开始使用FlatterWeb。从另一个文件(例如test.dart)更改一个文件(例如Home.dart)中的小部件状态的最佳实践是什么Flutter 从另一个小部件更改小部件的状态,flutter,dart,flutter-widget,Flutter,Dart,Flutter Widget,我最近开始使用FlatterWeb。从另一个文件(例如test.dart)更改一个文件(例如Home.dart)中的小部件状态的最佳实践是什么 导入“包装:颤振/材料.省道”; 类MyHomePage扩展StatefulWidget{ @凌驾 _MyHomePageState createState()=>\u MyHomePageState(); } 类_MyHomePageState扩展状态{ Color colo=Colors.black; 种皮(){ 设置状态(){ colo=颜色。蓝色
导入“包装:颤振/材料.省道”;
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
Color colo=Colors.black;
种皮(){
设置状态(){
colo=颜色。蓝色;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:世界其他地区(
儿童:[
容器(
宽度:30,
身高:30,
颜色:科洛,
),
手势检测器(
onTap:(){
种皮();
},
子:容器(
子项:文本(“测试”),
))
],
),
);
}
}
在上面的代码中,我创建了一个初始颜色为黑色的框,并使用同一类MyHomePage中的手势检测器对其进行了更改。如何在不同的dart文件中使用不同的类执行相同的操作
首页.dart
import 'package:flutter/material.dart';
import 'package:testweb/test.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Color colo = Colors.black;
testA() {
setState(() {
colo = Colors.blue;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
Container(
width: 30,
height: 30,
color: colo,
),
TestB()
],
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“package:testweb/test.dart”;
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
Color colo=Colors.black;
种皮(){
设置状态(){
colo=颜色。蓝色;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:世界其他地区(
儿童:[
容器(
宽度:30,
身高:30,
颜色:科洛,
),
TestB()
],
),
);
}
}
飞镖
import 'package:flutter/material.dart';
class TestB extends StatefulWidget {
@override
_TestBState createState() => _TestBState();
}
class _TestBState extends State<TestB> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
testA();
},
child: Container(
child: Text("test"),
));
}
}
导入“包装:颤振/材料.省道”;
类TestB扩展了StatefulWidget{
@凌驾
_TestBState createState()=>\u TestBState();
}
类_TestBState扩展状态{
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
种皮();
},
子:容器(
子项:文本(“测试”),
));
}
}
您可以使用TestB onTap中的函数设置主页容器的颜色
飞镖
import 'package:flutter/material.dart';
class TestB extends StatefulWidget {
Function colorChange;
TestB({this.colorChange});
@override
_TestBState createState() => _TestBState();
}
class _TestBState extends State<TestB> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
widget.colorChange(Colors.blue);
},
child: Container(
child: Text("test"),
));
}
}
导入“包装:颤振/材料.省道”;
类TestB扩展了StatefulWidget{
功能色变;
TestB({this.colorChange});
@凌驾
_TestBState createState()=>\u TestBState();
}
类_TestBState扩展状态{
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
颜色改变(颜色为蓝色);
},
子:容器(
子项:文本(“测试”),
));
}
}
霍姆·达特
import 'package:flutter/material.dart';
import 'package:testweb/test.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Color colo = Colors.black;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
Container(
width: 30,
height: 30,
color: colo,
),
TestB(colorChange: (color){
setState(() {
colo = color;
});
})
],
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“package:testweb/test.dart”;
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
Color colo=Colors.black;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:世界其他地区(
儿童:[
容器(
宽度:30,
身高:30,
颜色:科洛,
),
测试B(颜色变化:(颜色){
设置状态(){
colo=颜色;
});
})
],
),
);
}
}
告诉我它是否有效
import 'package:flutter/material.dart';
import 'package:testweb/test.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Color colo = Colors.black;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
Container(
width: 30,
height: 30,
color: colo,
),
TestB(colorChange: (color){
setState(() {
colo = color;
});
})
],
),
);
}
}