開始增加商品列表之外的其他頁面
lib
- pages - home.dart
- product.dart
- main.dart
- products.dart
import 'package:flutter/material.dart';
import '../product_manager.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title : Text('商品列表')
),
body: ProductManager(startingProduct : 'test')
);
}
}
import 'package:flutter/material.dart';
import './pages/home.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.deepOrange,
accentColor: Colors.deepPurple
),
home : HomePage() //首頁拆去其他檔案了
);
}
}
import './pages/product.dart';
...
Widget _buildProductItem(BuildContext context, int index) {
//上一篇有提到,若陣列長度大於零,才會跑這個function渲染出卡片
return Card(
child: Column(
children: <Widget>[
Image.asset('assets/food.jpg'),
Text(products[index]),
ButtonBar( //增加一個buttonBar
alignment: MainAxisAlignment.center,
//主軸對齊:垂直置中
children: <Widget>[
FlatButton(
//扁平化按鈕
child: Text('Details'),
//按鈕文字
onPressed: () => Navigator.push(
//按下去以後,把新的一頁蓋到目前頁面上
context,
//舊的資訊先傳進來
MaterialPageRoute(
//傳一個route組件進來
builder: (BuildContext context) => ProductPage(),
//建好後,切到剛剛引入的productPage()
),
),
)
],
)
],
),
);
}
...
import 'package:flutter/material.dart';
class ProductPage extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title : Text('商品細節')
),
//新的一頁的title
body: Center(
//置中
child: Column(
children: <Widget>[
Text('Details'),
RaisedButton(
child: Text('Back'),
onPressed: () => Navigator.pop(context),
//pop會把剛剛蓋過去的,又pop上來(目前app狀態context要傳進去)
)
]
),
)
);
}
}
主題來源:
Learn Flutter & Dart to Build iOS & Android Apps
請問我照範例做??
程式出錯在ProductPage(),
它說沒有定義!!!
我找過文章,沒看到 ProductPage()的程式碼??