[英]How to pass a string from one page to another on flutter?
如何将 image_category(a String value) 从一个页面传递到另一个页面并将其替换为Text
小部件?
这是我从( scrlView
)获取字符串的地方:-
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(0.0),
child: GestureDetector(
onTap: () {
print("$image_category"); //TODOPass tpped text to CatagoriesBar,
},
这就是我想用文本小部件替换它的地方(这是在单独的页面CategoriesBar
上):-
import 'package:flutter/material.dart';
class CategoriesBar extends StatefulWidget {
@override
_CategoriesBarState createState() => _CategoriesBarState();
}
class _CategoriesBarState extends State<CategoriesBar> {
@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.center,
child: Text(
"All Categories",//TODOReplace with category tapped on scrlView
style: TextStyle(
color: Colors.black,
fontSize: 17.0,
fontWeight: FontWeight.bold,
),
),
);
}
我是 flutter 的新手,抱歉。 如果细节不够(在评论中告诉我,我会更新问题)
我尝试过使用Navigator.push
,它会弹出一个带有“image_category”的新黑屏。
这是我尝试过的: scrlView
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(0.0),
child: GestureDetector(
onTap: () {
print("$image_category");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CategoriesBar (categoryTitle: image_caption),
)
);
},
这是我尝试过的:- CategoriesBar
import 'package:flutter/material.dart';
class CategoriesBar extends StatefulWidget {
final String categoryTitle;
CategoriesBar({Key key, @required this.categoryTitle}) : super(key: key);
@override
_CategoriesBarState createState() => _CategoriesBarState();
}
class _CategoriesBarState extends State<CategoriesBar> {
@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.center,
child: Text(
widget.categoryTitle,
style: TextStyle(
color: Colors.red,
fontSize: 17.0,
fontWeight: FontWeight.bold,
),
),
);
}
这就是我得到的:-
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(0.0),
child: GestureDetector(
onTap: () {
print("$image_category");
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CategoriesBar (text: image_category),
)
);
},
…
)
)
}
接着:
import 'package:flutter/material.dart';
class CategoriesBar extends StatefulWidget {
final String text;
CategoriesBar ({Key key, @required this.text}) : super(key: key);
@override
_CategoriesBarState createState() => _CategoriesBarState();
}
class _CategoriesBarState extends State<CategoriesBar> {
@override
Widget build(BuildContext context) {
return Align(
alignment: Alignment.center,
child: Text(
widget.text,
style: TextStyle(
color: Colors.black,
fontSize: 17.0,
fontWeight: FontWeight.bold,
),
),
);
}
}
有关在 Flutter 中的屏幕之间传递数据的更多信息
更新
您应该将内容包装在 Scaffold 视图中。
import 'package:flutter/material.dart';
class CategoriesBar extends StatefulWidget {
final String categoryTitle;
CategoriesBar({Key key, @required this.categoryTitle}) : super(key: key);
@override
_CategoriesBarState createState() => _CategoriesBarState();
}
class _CategoriesBarState extends State<CategoriesBar> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("APPBAR"),
),
body: Align(
alignment: Alignment.center,
child: Text(
widget.categoryTitle,
style: TextStyle(
color: Colors.red,
fontSize: 17.0,
fontWeight: FontWeight.bold,
),
),
),
);
}
请确保相应地关闭括号。 我在没有任何代码编辑器的情况下打字。 Vs 代码为您提供了很好的格式化和错误处理能力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.