Flutter第三讲,MaterialApp 和 Scaffold

我们第一讲就说了,相当于UIKitmaterial.dart,是Flutter提供给我们一套便于我们快速写UI的包,
那其实在真正写项目的时候Flutter提供了一个非常有用东西,什么东西呢?接下来我们就来看看MaterialApp, 为了方便讲解我们来新建一个App类,然后我们修改下main函数

main

void main() => runApp(App())

App 类

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyWidget()
    );
  }
}

这次我们返回MaterialApp,相当于iOSkeyWindow,它有个属性是home,相当于windowrootViewController,我们设置成MyWidget,我们来看看有什么变化

我们看到Hello Flutter底下多了两个黄色的横杠,右上角多了个DEBUG的标识,我们先不管这些,接下来我们来再完善下这个界面,我们再来看一个叫ScaffoldWidget,这个Widget就像iOSNavigationController一样,它有一个属性叫appBar相当于我们的navigationBar一样,有个title属性,注意这个title属性也是个Widget类型的,所以可以是文字也可以是其他,我们先给它设置个文字来看看

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
            title: Text('FlutterDemo')),
      )
    );
  }
}

我们保存下看下效果

是不是跟我们刚建工程时系统给的demo很像了,它还有个body属性就是除了导航条下面的部分,我们设置成MyWidget,来看看最终的效果

我们现在可以看到,虽然我们现在的项目有点小,以后我们做项目差不多也就是这个结构了,最后我们再来介绍下MaterialApp的另一个非常有用的属性theme就是主题,它可以控制导航条的颜色,我们来修改下theme


class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('FlutterDemo')),
        body: MyWidget(),
      ),
      theme: ThemeData(primaryColor: Colors.yellow),
    );
  }
}

看看效果

怎么样?是不是觉得也没多难吧,其实小程序也是一样的,等你做小程序的时候就会发现很多东西都是共通的,明天我们接着来看ListView和常用的Widget,然后我们就直接进入我们的项目实战了

 

喜欢的朋友可以扫描关注我的公众号(多多点赞,多多打赏,您的支持是我写作的最大动力)

iOS_DevTips

Flutter中的3D开发可以通过使用第三方库来实现,最常用的库是flutter_cube。这个库提供了用于在Flutter应用程序中创建和渲染3D场景的功能。 要开始使用flutter_cube,首先需要在项目的pubspec.yaml文件中添加依赖: ```yaml dependencies: flutter_cube: ^1.0.0 ``` 然后运行`flutter packages get`来获取库的最新版本。 接下来,您可以在Flutter应用程序中导入flutter_cube库并使用CubeWidget来创建一个3D场景。例如,以下代码创建了一个简单的3D场景,其中包含一个旋转的立方体: ```dart import 'package:flutter/material.dart'; import 'package:flutter_cube/flutter_cube.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('Flutter 3D')), body: CubeWidget( scene: Scene( objects: [ Object( position: Vector3(0, 0, -4), scale: Vector3(2, 2, 2), rotation: Vector3(0, 45, 0), lighting: true, fileName: 'assets/cube/cube.obj', ), ], backgroundColor: Color(0xff222222), ambientColor: Color(0xff555555), ), ), ), ); } } ``` 在上面的代码中,我们使用CubeWidget创建了一个包含一个立方体的3D场景。立方体的模型文件(.obj)在assets目录下,你需要先创建一个assets目录并将模型文件放在其中。 这只是一个简单的示例,你可以根据自己的需求来创建更复杂的3D场景。你可以在flutter_cube库的文档中找到更多关于如何使用它的信息。 注意:由于Flutter是一个UI框架,它的3D功能相对来说比较有限。如果你需要更高级的3D功能,可能需要考虑使用专门的3D引擎,如Unity或Unreal Engine。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值