import 'package:flutter/material.dart'; import 'package:taskservice/Common/JXColors.dart'; import 'package:taskservice/Model/JXMemberModel.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'JXZS', theme: ThemeData( // This is the theme of your application. // // Try running your application with "flutter run". You'll see the // application has a blue toolbar. Then, without quitting the app, try // changing the primarySwatch below to Colors.green and then invoke // "hot reload" (press "r" in the console where you ran "flutter run", // or simply save your changes to "hot reload" in a Flutter IDE). // Notice that the counter didn't reset back to zero; the application // is not restarted. primarySwatch: Colors.blue, // This makes the visual density adapt to the platform that you ru // the app on. For desktop platforms, the controls will be smaller and // closer together (more dense) than on mobile platforms. visualDensity: VisualDensity.adaptivePlatformDensity, ), home: MyHomePage(title: 'JXZS'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State { // 参数 /*空白区域键盘消失控制*/ FocusNode blankNode = FocusNode(); /*搜索值*/ String _searchText; /*tableView*/ List _datasource = List(); /*筛选列表数据*/ void filterListView() { print('筛选:$_searchText'); String text = _searchText; } /*cell*/ Widget theCellBuilder(BuildContext context, int row) { return GestureDetector( onTap: () { print('click cell, row:$row'); }, child: Container( height: 92.0, alignment: Alignment.topCenter, child: Container( height: 80.0, alignment: Alignment.center, decoration: BoxDecoration( color: JXColors.kFFFFFF, borderRadius: BorderRadius.all(Radius.circular(8.0)), border: Border( bottom: BorderSide( color: JXColors.kE6E6E6, ), ), ), child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( padding: EdgeInsets.only(left: 12.0, right: 12.0), height: 30.0, alignment: Alignment.center, color: Colors.blue, child: Row ( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( padding: EdgeInsets.only(left: 12.0), width: 80.0, child: Text( 'Poto', style: TextStyle( fontSize: 16, color: JXColors.k2E3032, backgroundColor: JXColors.kE6E6E6, ), ), ), Expanded( child: Text( 'Right', textAlign: TextAlign.right, style: TextStyle( fontSize: 16, color: JXColors.k2E3032, ), ), ) ], ), ), Container( padding: EdgeInsets.only(left: 24, right: 12), child: Text( '任务', style: TextStyle( fontSize: 16, color: JXColors.k2E3032, ), ), ) ], ), ), ) ); } @override Widget build(BuildContext context) { for (int i = 0; i < 10; i++) { JXMemberModel model = JXMemberModel(); model.name = 'Poto'; model.tel = '1560000'; model.addr = '详细地址'; _datasource.add(model); } return GestureDetector( onTap: () { FocusScope.of(context).requestFocus(blankNode); }, child: Scaffold( appBar: AppBar( title: Text(widget.title), ), body: SafeArea( child: Column( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( color: JXColors.kF0F0F0, alignment: Alignment.center, padding: EdgeInsets.fromLTRB(12.0, 4.0, 12.0, 4.0), height: 50.0, child: Row(children: [ Container( width: 44.0, child: Icon( Icons.search, size: 24.0, )), Expanded( child: TextField( focusNode: blankNode, obscureText: false, cursorColor: JXColors.k1F2529, decoration: InputDecoration( border: InputBorder.none, hintText: '快速筛选', labelStyle: TextStyle( color: JXColors.k2E3032, fontSize: 18, ), ), onSubmitted: (value) { setState(() { _searchText = value; }); filterListView(); }, ), ), ])), Expanded( flex: 1, child: Container( color: JXColors.kF0F0F0, child: ListView.builder( padding: EdgeInsets.only(left: 12.0, right: 12.0), itemCount: _datasource.length, itemExtent: 92.0, itemBuilder: (BuildContext context, int row) { return theCellBuilder(context, row); }, ), )), Container( color: JXColors.kF0F0F0, height: 44.0, child: Row( children: [ Expanded( child: FlatButton( onPressed: () { print('新建会员'); }, padding: EdgeInsets.all(0), color: JXColors.kFFFFFF, textColor: JXColors.k1F2529, child: const Text('新建会员', style: TextStyle(fontSize: 14)), ), ), Expanded( child: FlatButton( onPressed: () { print('会员列表'); }, padding: EdgeInsets.all(0), color: JXColors.k1F2529, textColor: JXColors.kFFFFFF, child: const Text('会员列表', style: TextStyle(fontSize: 14)), ), ), ], ), ), ], ), ), )); } }