一:flutter & dart | 填坑笔记
1. main 是固定写法,它是程序入口,运行 dart 文件默认执行 main 方法
void main() { print('hello dart!') }
2. flutter 有状态组件 StatefluWidget 和 无状态组件 StatelessWidget
当我们有需要对页面的内容进行动态修改的时候,如果我们使用无状态组件,页面上的内容就不会被更新。
可以直接输入 stl / stf 自动创建 StatelessWidget / StatefluWidget
无状态组件
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyAPpp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Flutter Demo') ), body: HomePage(), ) ); } }
有状态组件
import 'package:flutter/material.dart'; class HomePage extends StatefluWidget { HomePage({Key key}) : super(key: key); @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { int cont = 0; @override Widget build(BuildContext context) { return Column( children: <Widget>[ SizedBox(height: 20), Chip( label: Text('${this.cont}'), ), SizedBox(height: 20), RaisedButton( child: Text('按钮'), onPressed:() { setState(() { this.cont++; }); }, ) ], ); } }
3. 若要使用 InkWell 组件 , 必须在外层包一层 Scaffold
4. 在页面中定义了一个变量,若需要点击某个事件改变这个变量的值,需要用到 setState
5. 组件传参,如果是参数都是必传,直接按照序号传递参数;
如果参数是非必传,在组件中给非必传的参数加上 {}, 在调用的地方,要声明 给哪个参数传参;
Widget build(BuildContext context) { Widget _contactItem(Map item, {int index}) { return ...} // index 非必传参数 return Container( child: _contactItem({}, index: index) ) }
6. Expanded组件只能在 Row Column下
7. 报以下错误,就是结构问题
8、local.dart
// final String PROXY_URL = ''; // 打包的时候 final String PROXY_URL = 'ip:端口'; // 抓包的时候