Flutter实战入门
上QQ阅读APP看书,第一时间看更新

2.3.2 iOS手机调试运行

可以使用iOS模拟器查看效果,因为模拟器的效果和真机一样。在Android Studio设备选择中选择“open iOS Simulator”创建iOS模拟器,如图2-11所示。

图2-11 创建iOS模拟器

模拟器创建成功后击“运行”,运行效果如图2-12所示。

图2-12 iOS模拟器运行效果

这时我们看到Flutter App已经运行起来了,点击“+”按钮,屏幕中间的数字就会加1,这个效果的实现代码在lib\main.dart中。


void main() => runApp(MyApp());

这是入口函数,运行MyApp。MyApp类如下所示:


class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

其中,MaterialApp表示使用Material风格(第3章会具体介绍Material风格组件);title为标题;theme为主题,这里可以设置全区主题(第3章会具体介绍theme);home为首页,当前加载的Widget,例子中加载的是MyHomePage Widget。

MyHomePage如下所示:


 class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

createState方法中创建了_MyHomePageState,如下所示:


 class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

其中,_counter属性就是App上展示的数字;incrementCounter方法对counter执行加1操作,点击“+”按钮调用此方法;setState方法中加1会更新到屏幕上;Scaffold是和Material配合使用的控件;AppBar是顶部的区域,如图2-13所示。

图2-13 控件界面

body表示AppBar以下区域;Center为容器类控件,子控件居中显示;Column为容器类控件,子控件垂直排列;Text为文本控件;FloatingActionButton为按钮控件,也就是App中“+”按钮。

上面一些控件和方法在后面的相应章节中会具体介绍。