Dart 如何仅呈现一个小部件集合状态

Dart 如何仅呈现一个小部件集合状态,dart,flutter,flutter-layout,flutter-test,Dart,Flutter,Flutter Layout,Flutter Test,我有两个简单的基础,一个是工作,第二个需要一些解释。 所以,当我点击示例一中的按钮时,它工作并设置Taet呈现页面 第二个示例我使用了一个具有setState of Button的body函数。当我点击按钮时,即使使用setState注释,也不会发生任何事情,如果 括号内的变量不呈现。 当我在类中创建变量实例时,它工作得很好,但我只需要渲染一个按钮。如何 完整代码示例一 import 'package:flutter/material.dart'; main() => runApp(Ma

我有两个简单的基础,一个是工作,第二个需要一些解释。 所以,当我点击示例一中的按钮时,它工作并设置Taet呈现页面

第二个示例我使用了一个具有setState of Button的body函数。当我点击按钮时,即使使用setState注释,也不会发生任何事情,如果 括号内的变量不呈现。 当我在类中创建变量实例时,它工作得很好,但我只需要渲染一个按钮。如何

完整代码示例一

import 'package:flutter/material.dart';

main() => runApp(MaterialApp(
      home: Home(),
    ));

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool istrue = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Works fine'),),
      body: Center(child: body()),
    );
  }

  Widget body() {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            setState(() {
              istrue = !istrue;
            });
          },
          child: Text('Click me'),
        ),
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text(istrue ? 'Boo!' : ''),
        ),
      ],
    );
  }
}
导入“包装:颤振/材料.省道”;
main()=>runApp(MaterialApp(
home:home(),
));
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
布尔istrue=假;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:Text('worksfine'),),
主体:中心(子对象:主体()),
);
}
小部件主体(){
返回列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
已按下:(){
设置状态(){
istrue=!istrue;
});
},
子:文本(“单击我”),
),
填充物(
填充:常数边集全部(8.0),
孩子:文本(是真的吗?'Boo!':“”),
),
],
);
}
}
完整代码示例二

import 'package:flutter/material.dart';

main() => runApp(MaterialApp(
  home: Home(),
));

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool istrue = false;
  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(title: Text('Works fine'),),
      body: Center(child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          body(),body(),
        ],
      )),
    );
  }

  Widget body() {

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        RaisedButton(
          onPressed: () {
            setState(() {
              istrue = !istrue;
            });
          },
          child: Text('Click me'),
        ),
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text(istrue ? 'Boo!' : ''),
        ),
      ],
    );
  }
}
导入“包装:颤振/材料.省道”;
main()=>runApp(MaterialApp(
home:home(),
));
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
布尔istrue=假;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:Text('worksfine'),),
主体:中心(子项:列)(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
body(),body(),
],
)),
);
}
小部件主体(){
返回列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
已按下:(){
设置状态(){
istrue=!istrue;
});
},
子:文本(“单击我”),
),
填充物(
填充:常数边集全部(8.0),
孩子:文本(是真的吗?'Boo!':“”),
),
],
);
}
}

感谢天空。

我理解你的问题有点困难,但我也明白英语不是你的第一语言。您似乎在问,“如何仅渲染一个按钮,例如#2?”。如果这不是你的问题,请告诉我,以便我和其他人能够帮助你

这将只渲染一个按钮

import 'package:flutter/material.dart';

main() => runApp(MaterialApp(
  home: Home(),
));

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool istrue = false;
  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(title: Text('Works fine'),),
      body: Center(child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          RaisedButton(
            onPressed: () {
              setState(() {
                istrue = !istrue;
              });
            },
            child: Text('Click me'),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(istrue ? 'Boo!' : ''),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(istrue ? 'Boo!' : ''),
          ),
        ],
      )),
    );
  }

}
导入“包装:颤振/材料.省道”;
main()=>runApp(MaterialApp(
home:home(),
));
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类(HomeState扩展状态){
布尔istrue=假;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:Text('worksfine'),),
主体:中心(子项:列)(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
升起的按钮(
已按下:(){
设置状态(){
istrue=!istrue;
});
},
子:文本(“单击我”),
),
填充物(
填充:常数边集全部(8.0),
孩子:文本(是真的吗?'Boo!':“”),
),
填充物(
填充:常数边集全部(8.0),
孩子:文本(是真的吗?'Boo!':“”),
),
],
)),
);
}
}

在第二个示例中,您正在调用Scaffold小部件中另一个列小部件中的列小部件。你为什么要那样做?有许多方法可以在颤振API中构造该布局

不能有
新列(新列(…)它的冗余

编辑: 我在颤振网站上找到了这个:

Column小部件不会滚动(,通常认为列中的子项多于可用房间中的子项是错误的。如果您有一行小部件并希望它们在没有足够空间时滚动,请考虑使用ListVIEW。


你的两个例子对我都有用!这两个例子都很好,但我只需要渲染一个按钮。