android - Flutter-如何在单击按钮时呈现窗口小部件?

标签 android flutter dart flutter-layout

嗨,我是新手,我遇到了问题。我创建了简单的应用程序以获得更好的解释。在我的main.dart中,我叫在button1.dart中的 Button1()。当我按下按钮时,应在button2.dart中调用 Button2()。但是第二个按钮没有渲染。我该怎么做?以及如何更改button2.dart中的某些数据?例如,更改按钮的文本。我将按钮的文本设置为某个变量,当我单击第一个按钮时如何传递它?
谢谢
我的main.dart代码

import 'package:flutter/material.dart';
import 'button1.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  MyHomePageState createState() => MyHomePageState();
}

class MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("My app"),
      ),
      body: Center(
        child: Column(
          children: <Widget>[
            Button1(),
          ],
        ),
      ),
    );
  }
}

我的button1.dart代码
import 'button2.dart';

class Button1 extends StatefulWidget {
  @override
  _Button1State createState() => _Button1State();
}

class _Button1State extends State<Button1> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: <Widget>[
          RaisedButton(
            child: Text("button1"),
            onPressed: () {
              setState(() {
                Button2();
              });
            },
          ),
        ],
      ),
    );
  }
}
这是我的button2.dart代码

class Button2 extends StatefulWidget {
  @override
  _Button2State createState() => _Button2State();
}

class _Button2State extends State<Button2> {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        children: <Widget>[
          RaisedButton(
            child: Text("Button2"),
            onPressed: () {},
          ),
        ],
      ),
    );
  }
}

最佳答案

我认为您是编程的新手,我想在这里尽可能简单地解释一下这个概念。
让您拥有主类( parent )。它包含您的两个小部件/按钮( child )。要将数据从一个 child 传递到另一个 child ,您可以在父类中有一个变量,并通过它共享您的数据。这是一个例子。

class Parent{
String sharedData = "";
bool isVisible = false;

  build(context){
    //...
      Child1((String newData){
        setState(() {
          sharedData = newData;
          isVisible = true;
        });
      }),
     if(isVisible) Child2(sharedData),
    }
}
在这里,Child1使用回调来更新数据。在setState内部,它正在更新Parent类变量,并且还在重建小部件树。这将更新Child2类数据。
希望你明白了...

关于android - Flutter-如何在单击按钮时呈现窗口小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63196523/

相关文章:

android - SoundPoolImpl.finalize() 的 TimeoutException 错误在 10 秒后超时

mysql - Flutter/Dart 只提取日期和时间?

dart - OverlayEntry.remove() 不会从 overlayState 中删除条目

java - Retrofit2 如何获取重定向网址 @HEAD ("/")

java - Integer.parseInt ("0x1F60A") 以 NumberformatException 结尾

java - 如何在Android Studio中对 ListView 中的数据进行排序

flutter - 了解 Flutter 渲染引擎

flutter - 如何限制 flutter 流的结果计数

android - 如何生成私钥/公钥对来加密消息

modal-dialog - Bootjack Modal生成异常:类 'TransitionEvent'没有实例getter 'relatedTarget'