【发布时间】:2021-12-26 00:05:05
【问题描述】:
我在一个有状态的小部件中有一个变量,它包含一个字符串值。我从另一个飞镖文件中调用了一个小部件。我需要从此小部件更改有状态小部件中变量的值。我尝试过 valuelistanablebuilder 但它只在该 dart 文件中调用函数时才听值。请告诉我如何做的方法和示例代码。
import 'package:flutter/material.dart';
import 'package:messaging_service/components/app_bar.dart';
import 'package:messaging_service/components/home_pages/all_messages.dart';
import 'package:messaging_service/components/home_pages/stories.dart';
import 'package:messaging_service/components/search_bar.dart';
import 'package:messaging_service/components/strings.dart';
import 'package:messaging_service/components/style.dart';
class HomeMobile extends StatefulWidget {
const HomeMobile({Key? key}) : super(key: key);
@override
_HomeMobileState createState() => _HomeMobileState();
}
class _HomeMobileState extends State<HomeMobile> {
var currentPage = 'all';
TextEditingController searchChatController = TextEditingController();
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: lightColor,
appBar: AppBarHomeMobile(context),
body: SingleChildScrollView(
child: Column(
children: [
AppBarHomeExtend(),
const SizedBox(
height: 10,
),
//To Call a Widget
],
),
),
);
}
}
在这个AppBarHomeExtend()中有一些按钮..
Widget AppBarHomeExtend() {
return Container(
height: 80,
decoration: BoxDecoration(
color: lightColor,
boxShadow: [
BoxShadow(color: darkColor, blurRadius: 5),
],
borderRadius: const BorderRadius.only(
bottomLeft: Radius.circular(35), bottomRight: Radius.circular(35))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
HRButtons('All Messages', () {}),
HRButtons('Groups', () { }),
HRButtons('Stories', () {}),
HRButtons('Calls', () {}),
],
),
);
}
当调用这些按钮时,我需要从那个有状态的小部件中更改变量 currentPage 的值。
【问题讨论】:
-
您是否考虑过将值作为构造函数参数传入?通常,通过在构造函数中指定参数来配置小部件。请在问题中发布您要执行的操作的代码。
-
我已经编辑了这个问题。请看。
-
question 的答案应该会有所帮助。您基本上想将回调函数传递给调用父小部件的
setState的子小部件。 -
你要回调吗,看这个问题,找ValueSeter。 stackoverflow.com/questions/54493002/…