Flutter 如何在flatter中调用不同类的变量
我希望这个程序能做三件事。第一,显示我的号码的当前值。第二,显示我以前输入了多少。第三,输入要从数字的原始值中减去多少 但是我的代码有一个问题。在SubtractState类中,我的FlatButton有一个onPressed函数。内部有一个名为enteredValue的变量。当我试图在类“Type”中调用这个变量时,它显然给了我错误 我知道我需要找到一种从不同类调用变量的方法。但是我该怎么做呢Flutter 如何在flatter中调用不同类的变量,flutter,dart,Flutter,Dart,我希望这个程序能做三件事。第一,显示我的号码的当前值。第二,显示我以前输入了多少。第三,输入要从数字的原始值中减去多少 但是我的代码有一个问题。在SubtractState类中,我的FlatButton有一个onPressed函数。内部有一个名为enteredValue的变量。当我试图在类“Type”中调用这个变量时,它显然给了我错误 我知道我需要找到一种从不同类调用变量的方法。但是我该怎么做呢 import 'package:flutter/material.dart'; void main
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Center(
child: GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Type()),
);
},
child: Text(
value.toString(),
style: TextStyle(
fontSize: 50.0,
),
),
))));
}
}
class Type extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Container(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
GestureDetector(
child: Text("You Entered ${globals.enteredValue} previously"),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Subtract()),
);
},
)
])))));
}
}
class Subtract extends StatefulWidget {
@override
SubtractState createState() => SubtractState();
}
class SubtractState extends State<Subtract> {
final _controller = TextEditingController();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
elevation: 0,
leading: IconButton(
color: Colors.black,
icon: Icon(Icons.arrow_back_ios),
onPressed: () => Navigator.pop(context)),
),
body: Container(
padding: const EdgeInsets.all(30.0),
child: Container(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextFormField(
textInputAction: TextInputAction.done,
controller: _controller,
keyboardType: TextInputType.number),
FlatButton(
child: Text("Subtract"),
onPressed: () {
//check if we can parse it
if (int.tryParse(_controller.text) == null)
return; //can't parse it
globals.enteredValue = int.parse(_controller.text);
setState(() {
value -= globals.enteredValue;
});
Navigator.push(
context,
MaterialPageRoute(builder: (context) => MyApp()),
);
},
),
])),
))));
}
}
int value = 0;
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
儿童:中心(
儿童:手势检测器(
onTap:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>Type()),
);
},
子:文本(
value.toString(),
样式:TextStyle(
字体大小:50.0,
),
),
))));
}
}
类类型扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:脚手架(
主体:容器(
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
手势检测器(
child:Text(“您以前输入了${globals.enteredValue}”),
onTap:(){
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>Subtract()),
);
},
)
])))));
}
}
类减法扩展StatefulWidget{
@凌驾
SubtractState createState()=>SubtractState();
}
类状态扩展状态{
最终_controller=TextEditingController();
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
海拔:0,
领先:IconButton(
颜色:颜色,黑色,
图标:图标(图标、箭头、背面),
onPressed:()=>Navigator.pop(上下文)),
),
主体:容器(
填充:常数边集全部(30.0),
子:容器(
儿童:中心(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
TextFormField(
textInputAction:textInputAction.done,
控制器:_控制器,
键盘类型:TextInputType.number),
扁平按钮(
子项:文本(“减法”),
已按下:(){
//检查我们是否可以解析它
if(int.tryParse(_controller.text)==null)
return;//无法分析它
globals.enteredValue=int.parse(_controller.text);
设置状态(){
value-=globals.enteredValue;
});
导航器。推(
上下文
MaterialPage路由(生成器:(上下文)=>MyApp()),
);
},
),
])),
))));
}
}
int值=0;
我建议使用一个全局库在类之间共享应用程序变量,这是一个现有的简单解决方案:创建名为
globals.dart的dart文件
globals.dart:
library YOUR_PACKAGE_NAME.globals;
int x = 1 ;
类别1:
import 'package:YOUR_PACKAGE_NAME/globals.dart' as globals;
print(globals.x) ; //prints 1
globals.x= 2 ;
在你的班级2中:
import 'package:YOUR_PACKAGE_NAME/globals.dart' as globals;
print(globals.x) ; //prints 2
你是个明星。