iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

基礎學習Flutter系列 第 13

Day13-學習[Building for iOS with Flutter]得出基礎應用程式

  • 分享至 

  • xImage
  •  

基礎子界面新增:

class AddToLogScreen extends StatelessWidget {
  @override
  Widget build (BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: CupertinoNavigationBar(
        middle: Text ('Add to Log'),
      ), // CupertinoNavigationBar
      child: Center(
        child: Text('Add to Log Screen!'),
      ),// Center
    ),// CupertinoPageScaffold
  }
}

新增:

  • 增加模型獲取內容
  • 將功能(新增至日誌)畫面拆分成小部件和有狀態表單
class AddToLogScreen extends Statelesswidget {
  @override
  Widget build(Bui laContext context) {
    final model = Provider.of<AppStates>(context, listen: true);

    return AdaptiveTextTheme(
      child: CupertinoPageScaffold(
        navigationBar: CupertinoNavigationBar(
          middle: Text ('Add to Log'),
        ), // CupertinoNavigationBar
        child: AddToLogForm(model.veggieById(1),(entry) {
          model.addLogEntry(entry);
          Navigator.of(context).pop();
        }),  // Center
      ),  // CupertinoPageScaffold
   );  //AdaptiveTextTheme
  }
}

typedef LogEntryCallback = void Function (LogEntry entry) ;

class AddToLogForm extends Statefulwidget {
  const AddToLogForm(this.veggie, this.onEntryCreated);
  
  final Veggie veggie;

  final LogEntryCallback onEntryCreated;
  
  @override
  _AddToLogFormState createState () => _AddToLogFormState() ;
}

class _AddToLogFormState extends State<AddToLogForm> {
  @override
  Widget build(BuildContext context) {
  final textTheme = AdaptiveTextTheme. of(context);
  
  return  SizedBox();

並解答如何將業務邏輯與表示邏輯分開?
當中使用螢幕小工具(AddToLogScreen),為管理與模型的活動。實際上會從中讀取數據並將數據保存其中有咩。

另一個小部件(_AddToLogFormState)負責表單的外觀和界面表現方式


上一篇
Day12-學習[Building for iOS with Flutter]得出基礎應用程式
下一篇
Day14-學習[Building for iOS with Flutter]子界面輸入小部件(記錄)
系列文
基礎學習Flutter30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言