bug fixes
This commit is contained in:
parent
56a885a6ee
commit
b343541200
|
|
@ -142,7 +142,8 @@ class RouteGenerator {
|
|||
return _createRoute(
|
||||
ChangeNotifierProvider<HashtagState>(
|
||||
create: (context) => HashtagState(),
|
||||
child: Hashtag(tag: settings.arguments as Tag),
|
||||
child:
|
||||
Hashtag(pageData: settings.arguments as Map<String, dynamic>),
|
||||
),
|
||||
);
|
||||
case Routes.filteredBookmarks:
|
||||
|
|
|
|||
|
|
@ -13,18 +13,20 @@ import 'package:flutter_spinkit/flutter_spinkit.dart';
|
|||
import 'package:provider/provider.dart';
|
||||
|
||||
class Hashtag extends StatefulWidget {
|
||||
final Tag tag;
|
||||
const Hashtag({Key? key, required this.tag}) : super(key: key);
|
||||
final Map<String, dynamic> pageData;
|
||||
const Hashtag({Key? key, required this.pageData}) : super(key: key);
|
||||
|
||||
@override
|
||||
_HashtagState createState() => _HashtagState();
|
||||
}
|
||||
|
||||
class _HashtagState extends State<Hashtag> {
|
||||
Tag get _tag => widget.pageData['tag'];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
final state = context.read<HashtagState>();
|
||||
state.id = widget.tag.id;
|
||||
state.id = _tag.id;
|
||||
Future.delayed(Duration.zero, () => state.getTagItems(page: 1));
|
||||
super.initState();
|
||||
}
|
||||
|
|
@ -32,7 +34,7 @@ class _HashtagState extends State<Hashtag> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return DidvanScaffold(
|
||||
appBarData: AppBarData(title: '#' + widget.tag.label, hasBack: true),
|
||||
appBarData: AppBarData(title: '#' + _tag.label, hasBack: true),
|
||||
slivers: [
|
||||
Consumer<HashtagState>(
|
||||
builder: (context, state, child) => SliverStateHandler<HashtagState>(
|
||||
|
|
@ -57,25 +59,29 @@ class _HashtagState extends State<Hashtag> {
|
|||
case 'radar':
|
||||
return RadarOverview(
|
||||
radar: item,
|
||||
onMarkChanged: (_, value, __) =>
|
||||
_changeMark(item.id, value, type),
|
||||
onCommentsChanged: (_, count) => item.comments = count,
|
||||
onMarkChanged: (_, value, __) => item.marked = value,
|
||||
);
|
||||
case 'news':
|
||||
return NewsOverview(
|
||||
news: item,
|
||||
onMarkChanged: (_, value, __) => item.marked = value,
|
||||
onMarkChanged: (_, value, __) =>
|
||||
_changeMark(item.id, value, type),
|
||||
);
|
||||
case 'podcast':
|
||||
return PodcastOverview(
|
||||
podcast: item,
|
||||
onMarkChanged: (_, value, __) => item.marked = value,
|
||||
onMarkChanged: (_, value, __) =>
|
||||
_changeMark(item.id, value, type),
|
||||
studioRequestArgs:
|
||||
const StudioRequestArgs(page: 0, type: 'podcast'),
|
||||
);
|
||||
case 'video':
|
||||
return VideoOverview(
|
||||
video: item,
|
||||
onMarkChanged: (_, value, __) => item.marked = value,
|
||||
onMarkChanged: (_, value, __) =>
|
||||
_changeMark(item.id, value, type),
|
||||
studioRequestArgs:
|
||||
const StudioRequestArgs(page: 0, type: 'video'),
|
||||
);
|
||||
|
|
@ -90,4 +96,15 @@ class _HashtagState extends State<Hashtag> {
|
|||
],
|
||||
);
|
||||
}
|
||||
|
||||
void _changeMark(int id, bool value, String type) {
|
||||
final state = context.read<HashtagState>();
|
||||
state.items
|
||||
.firstWhere((element) => element.id == id && element.type == type)
|
||||
.marked = value;
|
||||
state.update();
|
||||
if (type == widget.pageData['type']) {
|
||||
widget.pageData['onMarkChanged'](id, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ class _NewsDetailsState extends State<NewsDetails> {
|
|||
scrollController: _scrollController,
|
||||
items: state.news,
|
||||
currentIndex: state.currentIndex,
|
||||
onMarkChanged: (id, value) =>
|
||||
widget.pageData['onMarkChanged'](id, value),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ class _RadarDetailsState extends State<RadarDetails> {
|
|||
scrollController: _scrollController,
|
||||
items: state.radars,
|
||||
currentIndex: state.currentIndex,
|
||||
onMarkChanged: (id, value) =>
|
||||
widget.pageData['onMarkChanged']?.call(id, value),
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@ class _StudioDetailsState extends State<StudioDetails> {
|
|||
children: [
|
||||
StudioDetailsWidget(
|
||||
scrollController: _scrollController,
|
||||
onMarkChanged: widget.pageData['onMarkChanged'],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ class _StudioDetailsState extends State<StudioDetails> {
|
|||
children: [
|
||||
StudioDetailsWidget(
|
||||
scrollController: _scrollController,
|
||||
onMarkChanged: widget.pageData['onMarkChanged'],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
|
|
|||
|
|
@ -21,8 +21,10 @@ import 'package:url_launcher/url_launcher.dart';
|
|||
class StudioDetailsWidget extends StatelessWidget {
|
||||
final ScrollController? scrollController;
|
||||
final VoidCallback? onCommentsTabSelected;
|
||||
final void Function(int id, bool value) onMarkChanged;
|
||||
const StudioDetailsWidget({
|
||||
Key? key,
|
||||
required this.onMarkChanged,
|
||||
this.onCommentsTabSelected,
|
||||
this.scrollController,
|
||||
}) : super(key: key);
|
||||
|
|
@ -87,7 +89,11 @@ class StudioDetailsWidget extends StatelessWidget {
|
|||
for (var i = 0;
|
||||
i < state.studio.tags.length;
|
||||
i++)
|
||||
TagItem(tag: state.studio.tags[i]),
|
||||
TagItem(
|
||||
tag: state.studio.tags[i],
|
||||
onMarkChanged: onMarkChanged,
|
||||
type: isVideo ? 'video' : 'podcast',
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
|
|
|
|||
|
|
@ -9,18 +9,26 @@ import 'package:flutter/material.dart';
|
|||
|
||||
class TagItem extends StatelessWidget {
|
||||
final Tag tag;
|
||||
final void Function(int id, bool value) onMarkChanged;
|
||||
final String type;
|
||||
|
||||
const TagItem({
|
||||
Key? key,
|
||||
required this.tag,
|
||||
required this.onMarkChanged,
|
||||
required this.type,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWrapper(
|
||||
borderRadius: DesignConfig.lowBorderRadius,
|
||||
onPressed: () =>
|
||||
Navigator.of(context).pushNamed(Routes.hashtag, arguments: tag),
|
||||
onPressed: () => Navigator.of(context).pushNamed(Routes.hashtag,
|
||||
arguments: {
|
||||
'tag': tag,
|
||||
'onMarkChanged': onMarkChanged,
|
||||
'type': type
|
||||
}),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 4,
|
||||
|
|
|
|||
|
|
@ -338,6 +338,8 @@ class _PlayerNavBar extends StatelessWidget {
|
|||
sheetKey.currentState?.expand,
|
||||
);
|
||||
},
|
||||
onMarkChanged: (id, value) =>
|
||||
context.read<StudioState>().changeMark(id, value, true),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ class DidvanPageView extends StatefulWidget {
|
|||
final int initialIndex;
|
||||
final int currentIndex;
|
||||
final bool isRadar;
|
||||
final void Function(int id, bool value) onMarkChanged;
|
||||
final ScrollController scrollController;
|
||||
|
||||
final void Function(int index) onPageChanged;
|
||||
|
|
@ -32,6 +33,7 @@ class DidvanPageView extends StatefulWidget {
|
|||
required this.onPageChanged,
|
||||
required this.isRadar,
|
||||
required this.currentIndex,
|
||||
required this.onMarkChanged,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
|
|
@ -119,7 +121,11 @@ class _DidvanPageViewState extends State<DidvanPageView> {
|
|||
runSpacing: 8,
|
||||
children: [
|
||||
for (var i = 0; i < item.tags.length; i++)
|
||||
TagItem(tag: item.tags[i]),
|
||||
TagItem(
|
||||
tag: item.tags[i],
|
||||
onMarkChanged: widget.onMarkChanged,
|
||||
type: widget.isRadar ? 'radar' : 'news',
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
|||
Loading…
Reference in New Issue