在不使用MaterialApp Flutter的情况下在屏幕上添加按钮

时间:2019-02-06 07:54:24

标签: flutter flutter-layout

我正在尝试举一个简单的示例,在Flutter中屏幕的中心位置有一个可单击的按钮。我可以使用MaterialApp小部件来做到这一点,但我不想使用MaterialApp。

此示例适用于“文本”小部件

import 'package:flutter/material.dart';

void main() {
  runApp(
      Center(
      child: Text(
        'Hello, world!',
        textDirection: TextDirection.ltr,
      ),
    ),
  ) ;
}

但是我所有使用FlatButton或RaisedButton更改Text小部件的尝试都失败了,因为它们依赖于Material Widget

我也尝试过:

import 'package:flutter/material.dart';

void main() {
  runApp(
      Container(
          decoration: BoxDecoration(color: Colors.white),
          child:Center(
      child: RaisedButton(
            child: const Text('Press meh', textDirection: TextDirection.ltr),
            onPressed: () {
            },
          ),
          )
      )
  );
}

问题是:有什么方法可以使Button不依赖于Material Widget?

1 个答案:

答案 0 :(得分:0)

您必须先使用-WidgetsApp

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

class SomeText extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return WidgetsApp(
      builder: (context, int) {
        return Center(
          child: RaisedButton(
            onPressed: () {},
            child: Text(
              'Hello, world!',
              textDirection: TextDirection.ltr,
            ),
          ),
        );
      },
      color: Colors.blue,
    );
  }
}

根据文档-

  

WidgetsApp,它定义了基本的应用程序元素,但并不依赖   在材料库上。

enter image description here

更新-,不带其他类别:

如果您使用home:,则需要通过-onGenerateRoutepageRouteBuilder

  

如果未提供builder和onGenerateRoute,则   必须指定pageRouteBuilder,以便默认处理程序将   知道要构建哪种PageRoute过渡。

void main() {
  runApp(WidgetsApp(
    builder: (context, int) {
      return Center(
        child: RaisedButton(
          onPressed: () {},
          child: Text(
            'Hello, world!',
            textDirection: TextDirection.ltr,
          ),
        ),
      );
    },
    color: Colors.blue,
  ));
}