将小部件放在StreamBuilder上

时间:2019-11-14 09:55:31

标签: flutter dart flutter-layout

我有一个streamBuilder,但想在其中居中放置文本小部件,我尝试使用中心小部件,但它没有任何作用,因为文本小部件不占用整个垂直空间。

它看起来像这样:

StreamBuilder<List<Dtc>>(
      key: ValueKey(1),
      stream: bloc.dtcs,
      builder: (context, snapshot) {
        if (snapshot?.hasData ?? false) {
          // dtcs list is empty
          if (snapshot.data.isEmpty) {
            return Text(
              "My text to be centered"
            );
          } else {
            return Row(
              children: <Widget>[
                Expanded(
                  child: Container(
                    height: MediaQuery.of(context).size.height - 230.0,
                    child: ListView.builder(
                      padding: const EdgeInsets.all(0),
                      itemBuilder: (BuildContext context, int index) {
                        if (index >= snapshot.data.length) return null;
                        return AWidget();
                      },
                    ),
                  ),
                ),
              ],
            );
          }
        } else if (snapshot?.hasError ?? true) {
          return errorIcon;
        } else {
          return loadingIcon;
        }
      },
    );

是否有一个小部件,我能够使文本小部件vertacly Text("My text to be centered");

居中

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Row:

                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    Text("center text")
                  ],
                ),

答案 1 :(得分:-1)

(我认为)最简单的居中小部件方式是使用func authorize() { if #available(iOS 13.0, *) { guard let currentWindowScene = UIApplication.firstWindowScene else { return } presenter.present(in: currentWindowScene) } else { presenter.present() } } 小部件。

Center

您可以在此处找到有关 Container(child: Center(child: Text("My text to be centered"),) ), 小部件的更多详细信息:https://api.flutter.dev/flutter/widgets/Center-class.html

答案 2 :(得分:-1)

因此,我要做的是删除放在Expanded上的ListView.builder并用它包裹整个StreamBuilder。而且有效。

类似这样的东西:

Row(
      children: <Widget>[
        Expanded(
          child: StreamBuilder<List<Dtc>>(
...