在屏幕上添加按钮而不使用 MaterialApp Flutter

Posted

技术标签:

【中文标题】在屏幕上添加按钮而不使用 MaterialApp Flutter【英文标题】:Add button on the screen without using MaterialApp Flutter 【发布时间】:2019-06-30 03:02:17 【问题描述】:

我正在尝试制作一个简单的示例,在 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?

【问题讨论】:

喜欢吗?导入“包:颤振/material.dart”; void main() runApp( Card( child: Center( child: FlatButton( child: Text( 'Hello, world!', textDirection: TextDirection.ltr, ), ), ) ) ); 不工作 【参考方案1】:

那么你必须使用 - 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,定义了基本的app元素但不依赖 在材料库上。

更新 - 没有其他类:

如果你使用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,
  ));

【讨论】:

我们可以不单独上课吗?我的意思是我尝试了以下操作,但出现异常: void main() runApp( WidgetsApp( home: Center( child: RaisedButton( onPressed: () , child: Text( 'Hello, world!', textDirection: TextDirection) .ltr, ), ), ) ) ); 谢谢它有效。但我不明白为什么我们需要这部分“ builder: (context, int) return " 因为在文本的情况下,我们不需要它。 因为 - 这个小部件有条件 - 'builder != null || onGenerateRoute != null || pageRouteBuilder != null': 所以你已经定义了它们中的任何一个来工作。 我只是用builder

以上是关于在屏幕上添加按钮而不使用 MaterialApp Flutter的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中删除 MaterialApp 上的 Android 后退按钮?

在 swiftUI 中是不是可以使用按钮在屏幕上添加新视图?

IOS5 中的本地通知 - 如何让它在屏幕上而不是在通知中心弹出?

导航栏上添加了一个按钮,该按钮显示在所有屏幕上。我需要从所有屏幕上隐藏它,除了一个

Swift:在锁定屏幕上添加前进/后退 15 秒按钮

在屏幕上滑动手指激活按钮,就像它们被按下一样